osascript 'do shell script' 行结尾

osascript 'do shell script' line endings

我正在尝试调试一个更大的 osascript 'do shell script' 程序,并将问题缩小到一个我根本不理解的更短的重现案例。这是重现案例:

osascript -e 'do shell script "echo 123; echo 45; echo 6"'

给我输出:

653

谁能解释一下这是怎么回事?这几乎就像 'do shell script' 没有正确处理行尾,或者试图在一行上打印所有内容。

Applescript 在读取 shell 脚本的输出时将 \n 字符替换为 \r 字符。您可以通过 运行 通过 od -c:

的输出来判断这是发生了什么
$ osascript -e 'do shell script "echo 123; echo 45; echo 6"' | od -c
0000000    1   2   3  \r   4   5  \r   6  \n                            
0000011

要关闭此功能,请使用 without altering line endings 参数。

 osascript -e 'do shell script "echo 123; echo 45; echo 6" without altering line endings'

有关更多信息,请参阅 Technical Note TN2065