【问题标题】:Automator bash shell script troubleAutomator bash shell 脚本问题
【发布时间】: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 -xecho "f=$f, fn=$fn" or echo 显示脚本试图执行的内容 ~/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


【解决方案1】:

最终导致终端和自动机处理变量字符串的方式有所不同。虽然该命令在终端中执行得很好,但我需要在 automator 中的 fn 变量周围添加括号。

~/Applications/ffmpeg/ffmpeg -i "$f" -acodec libmp3lame -q:a 7 -ar 8000 -ac 1 "${fn}.mp3"

运行良好。

【讨论】: