获取在bash脚本中执行applescript的输出

时间:2015-06-26 16:37:41

标签: linux bash command applescript

I tried this technique for storing the output of a command in a BASH variable。它适用于" ls -l"但是当我运行苹果脚本时它不起作用。例如,下面是我的BASH脚本调用苹果脚本。

我试过了:

OUTPUT="$(osascript myAppleScript.scpt)"
echo "Error is ${OUTPUT}"

我可以看到我的苹果脚本在命令行上运行,我可以在命令行上看到错误输出,但是当它打印出来时#34;错误是"它打印一个空白,就好像苹果脚本输出没有被存储一样。

注意:我的苹果脚本故意错误地测试它。我试图通过收集苹果脚本输出来正确处理错误

2 个答案:

答案 0 :(得分:1)

尝试将stderr重定向到stdout:

OUTPUT="$(osascript myAppleScript.scpt 2>&1)"
echo "$OUTPUT"

答案 1 :(得分:0)

成功时,脚本的输出将写入STDOUT。失败时,错误消息将写入STDERR,并返回非零返回代码集。您想先检查返回代码,例如if [ $? -ne 0 ]; then...,如果您需要详细信息,则需要捕获osascript的STDERR。

或者,根据您正在做的事情,将set -e置于shell脚本的顶部可能只是最简单,以便在任何错误发生时立即终止。

坦率地说,bash和它的同类真的是一个POS。我见过的唯一一个体面的* nix外壳是鱼,但它不是任何标准(natch)。对于复杂的脚本,你可能会更好地使用Perl / Python / Ruby。