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;错误是"它打印一个空白,就好像苹果脚本输出没有被存储一样。
注意:我的苹果脚本故意错误地测试它。我试图通过收集苹果脚本输出来正确处理错误
答案 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。