【问题标题】:shell scripting no such file or directoryshell脚本没有这样的文件或目录
【发布时间】:2018-08-24 02:28:46
【问题描述】:

我编写了一个调用 ffmpeg 工具的 shell 脚本,但是当我运行它时,它说 No such file or directory yet it does!

这是我的脚本:

#!/bin/bash

MAIN_DIR="/media/sf_data/pipeline"

FFMPEG_DIR="/media/sf_data/livraison_transcripts/ffmpeg-git-20180208-64bit-static"

for file in MAIN_DIR/audio_mp3/*.mp3;
do
    cp -p file FFMPEG_DIR;
done

for file in FFMPEG_DIR/*.mp3;
do
    ./ffmpeg -i ${file%.mp3}.ogg
    sox $file -t raw --channels=1 --bits=16 --rate=16000 --encoding=signed-
integer --endian=little ${file%.ogg}.raw;
done

for file in FFMPEG_DIR/*.raw;
do
    cp -p file MAIN_DIR/pipeline/audio_raw/;
done

这是调试响应:

cp: cannot stat ‘file’: No such file or directory
./essai.sh: line 14: ./ffmpeg: No such file or directory
sox FAIL formats: can't open input file `FFMPEG_DIR/*.mp3': No such file or 
directory
cp: cannot stat ‘file’: No such file or directory

仅供参考,我在 VirtualBox 上运行 CentOS7

谢谢

【问题讨论】:

    标签: shell ffmpeg centos nosuchfileexception


    【解决方案1】:

    您好,您需要在您的 shell 脚本中进行一些更正,请参见下文。要获得分配给变量的实际值,您需要在 shell 脚本中的变量前面添加 $

    for file in $"MAIN_DIR"/audio_mp3/*.mp3;
    do
       cp -p "$file" "$FFMPEG_DIR";
    done
    
    for file in "$FFMPEG_DIR"/*.mp3;
    
    ./ffmpeg -i ${file%.mp3}.ogg
    #provide full path like /usr/bin/ffmpeg
    
    for file in "$FFMPEG_DIR"/*.raw;
    do
       cp -p "$file" "$MAIN_DIR"/pipeline/audio_raw/;
    done
    

    【讨论】:

    • 您在ffmpeg 命令前后缺少dodone${file%.mp3}.ogg 也应该被引用。
    【解决方案2】:

    这是一个Minimal, Complete, and Verifiable example (MCVE),这是您的脚本版本,它删除了显示问题所不需要的所有内容:

    #!/bin/bash
    MAIN_DIR="/media/sf_data/pipeline"
    echo MAIN_DIR
    

    预期输出:

    /media/sf_data/pipeline
    

    实际输出:

    MAIN_DIR
    

    这是因为bash 在扩展变量时需要$

    #!/bin/bash
    MAIN_DIR="/media/sf_data/pipeline"
    echo "$MAIN_DIR"
    

    引号不是解决问题所必需的,但可以防止出现空格问题。

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 2017-06-16
      • 2016-01-11
      • 2020-05-09
      • 2017-08-06
      • 2019-09-19
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多