[英]Applescript does not execute shell command
我有一个小书
do shell script "echo -n -e \\\\x61\\\\x61\\\\x61 > /tmp/file.txt"
但是file.txt不包含“ aaa”!
它改为包含“ -n -e aaa \\ n”。
有人可以帮我解决这个问题吗?
echo
不同版本在解释字符串中的命令选项(如-n
和-e
)和/或转义序列的方式上毫无希望地不一致。 正如cdarke所说的,不仅仅是bashvs.sh。 比这更混乱。 最好的办法是通过使用printf
来避免任何一个。 使用它比echo
要复杂一些,但是完全值得,因为您的脚本不会因为仅使用不同的options(!)编译最新版的Shell而中断。
在这种情况下,使用printf
实际上比使用echo
还要简单,因为它总是解释转义序列(在第一个参数中,是“格式字符串”,其余部分是不同的),并且不会在末尾打印换行符(除非您在格式字符串的末尾用\\n
明确告诉它)。 因此,您的脚本变为:
do shell script "printf \\\\x61\\\\x61\\\\x61 > /tmp/file.txt"
...尽管您可以通过使用单引号进一步简化它,以防止外壳程序在转义到达printf
之前解释转义:
do shell script "printf '\\x61\\x61\\x61' > /tmp/file.txt"
(转义符仍然加倍,因为它们已被AppleScript解释。但是至少它们不再需要四倍了。)
(ps 相关的xkcd )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.