bash脚本生成的命令在控制台上有效,但在脚本中无效



s后面的难题:我已经写了一个带有简单的bash脚本从MP4文件中提取无图像的MP3的任务。初稿的想法是仅使用

avconv -i input.mp4 output.mp3

在控制台上正常工作。

#!/bin/bash
# "extract_mp3_from_mp4.sh test.mp4 test.mp3"
if [ $# == 0 ]; then
        echo -e "Extracts mp3 from mp4 video.nUsage: $0 src_mp4 [target_mp3=src_mp4.mp3];"
        exit 0;
fi;
file_in=$1;
file_out=$2;
if [ -z $file_out ]; then file_out="${file_in}.mp3"; fi;
echo "Attempting to extract '${file_in}' to '${file_out}'";
cmd="avconv -i ${file_in} ${file_out};";
echo "Casting command: ${cmd}";
exit `$cmd`;

考虑呼叫

./extract_mp3_from_mp4.sh test.mp4 test.mp3

生成命令

avconv -i test.mp4 test.mp3;

让我感到困惑的是:脚本创建的命令是绝对有效。如果我从生成的输出中复制它 echo" casting命令:..." 直接进入控制台命令按预期工作。但是,当在脚本中使用时(退出$cmd )AVCONV返回

Unable to find a suitable output format for 'test.mp3;

怎么可能?

问题是分号:

cmd="avconv -i ${file_in} ${file_out};";

应该是

cmd="avconv -i ${file_in} ${file_out}";

我基本上建议不要在bash脚本中使用分号,因为这经常发生

相关内容

  • 没有找到相关文章

最新更新