我正在尝试使用以下命令创建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"
答案 0 :(得分:9)
要注意的是, 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
1>,其中有许多非系统可执行文件存在于$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
这比多次调用更有效,但建议在脚本代码内部和;
命令周围添加错误处理。
do shell script
(除了在bash配置文件中添加的内容),您可以调用$PATH
作为命令字符串中的第一个语句。 eval $(/usr/libexec/path_helper -s);
的其他重要注意事项:
do shell script
被调用为bash
,从而导致行为更改,最值得注意的是:
sh
)不可用<(...)
不接受选项并解释转义序列,例如echo
。\n
添加到命令字符串中来手动解决这些问题。shopt -uo posix; shopt -u xpg_echo;
区域设置,而不是系统的区域设置;要解决此问题,请手动将"C"
添加到命令字符串中。 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