AppleScript:错误“sh:lame:command not found”编号127

时间:2014-05-18 13:41:21

标签: macos shell applescript

我正在尝试使用以下命令创建AppleScript。我遇到的问题是第三行有错误。我没有问题直接在终端中使用lame命令。此外,lame不是原生Mac实用程序;我自己安装了它。有人有解决方案吗?

do shell script "cd ~/Downloads"

do shell script "say -f ~/Downloads/RE.txt -o ~/Downloads/recording.aiff"

do shell script "lame -m m ~/Downloads/recording.aiff ~/Downloads/recording.mp3"

-- error "sh: lame: command not found" number 127

do shell script "rm recording.aiff RE.txt"

4 个答案:

答案 0 :(得分:9)

补充Paul R's helpful answer

要注意的是, do shell script - 遗憾的是 - 看不到与$PATH 创建的贝壳相同的Terminal.app - 值得注意的缺席是{{ 1}}。

在我的OS X 10.9.3系统上,运行/usr/local/bin只会产生:

do shell script "echo $PATH"

有很多方法

  • 使用可执行文件的完整路径,与Paul的解决方案一样。

  • /usr/bin:/bin:/usr/sbin:/sbin 手动添加到/usr/local/bin ,其中有许多非系统可执行文件存在于$PATH - 值得考虑如果您在一个{{1}中调用多个可执行文件{1}}命令; e.g:

do shell script

请注意以上内容如何在单个字符串中使用单个 do shell script "export PATH=\"/usr/local/bin:$PATH\" cd ~/Downloads say -f ~/Downloads/RE.txt -o ~/Downloads/recording.aiff lame -m m ~/Downloads/recording.aiff ~/Downloads/recording.mp3 rm recording.aiff RE.txt" 命令和多个命令 - 命令可以通过以下方式分隔:换行符,如果在同一行,则为do shell script 这比多次调用更有效,但建议在脚本代码内部和;命令周围添加错误处理。

  • 获取与交互式shell相同的do shell script (除了在bash配置文件中添加的内容),您可以调用$PATH作为命令字符串中的第一个语句。

eval $(/usr/libexec/path_helper -s); 的其他重要注意事项:

  • do shell script调用为bash ,从而导致行为更改,最值得注意的是:
  • 区域设置设置为通用shopt -uo posix; shopt -u xpg_echo;区域设置,而不是系统的区域设置;要解决此问题,请手动将"C"添加到命令字符串中。
  • 无法读取启动文件(个人资料);这并不奇怪,因为创建的shell是一个非交互式(非登录)shell,但有时通过预先{{1}手动加载一个人的配置文件是很方便的。到命令字符串;但请注意,这会降低AppleScript的可移植性。

export LANG='" & user locale of (system info) & ".UTF-8'命令参考:http://developer.apple.com/library/mac/#technotes/tn2065/_index.html

答案 1 :(得分:5)

可能是PATH问题 - 使用跛足的完整路径,例如

do shell script "/usr/local/bin/lame -m m ~/Downloads/recording.aiff ~/Downloads/recording.mp3"

答案 2 :(得分:1)

我一直在努力通过Applescript很长一段时间来获取已安装的BASH命令的路径。利用这里的信息,我终于成功了。

tell me to set sox_path to (do shell script "eval $(/usr/libexec/path_helper -s); which sox")

感谢。

答案 3 :(得分:-1)

Url:http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309 

 ./configure

make install