【发布时间】:2015-04-04 23:47:46
【问题描述】:
我可能在这里遗漏了一些非常简单的东西,但是我在构建运行 bash shell 脚本的自动化服务时遇到了麻烦。插入 shell 时,脚本的所有元素都可以正常工作,但由于某种原因,automator 服务无法运行。该脚本调用 ffmpeg 来转换从 finder 传递给它的音频文件:
for f in "$@"
do
fn="${f%%.*}"
~/Applications/ffmpeg/ffmpeg -i "$f" -acodec libmp3lame -q:a 7 -ar 8000 -ac 1 "$fn.mp3"
done
脚本在没有 ffmpeg 命令的情况下运行良好,ffmpeg 命令在终端中自行运行良好。错误来自哪里?
谢谢!
【问题讨论】:
-
使用
set -x、echo "f=$f, fn=$fn" orecho 显示脚本试图执行的内容 ~/Applications/ffmpeg/ffmpeg -i "$f" -acodec libmp3lame -q:a 7 -ar 8000 - ac 1 "$fn.mp3"` -
感谢@WalterA 的帮助。在弄乱它太久之后,最终导致终端和自动机处理变量字符串的方式有所不同。虽然该命令在终端中执行得很好,但我需要在 automator 中的 fn 变量周围添加括号。 ~/Applications/ffmpeg/ffmpeg -i "$f" -acodec libmp3lame -q:a 7 -ar 8000 -ac 1 "${fn}.mp3" 运行良好。
标签: bash shell audio ffmpeg automator