我有这个运行一些Applescript的bash函数。如果我在Applescript编辑器或Textmate中运行Applescript部分,它工作正常,但在命令行上,函数失败...
wtf() {
osascript - <<EOF
tell application "iTerm"
tell current terminal
launch session "Railscasts"
tell the last session
write text 'echo -ne "\\e]1;$account\\a"'
end tell
end tell
end tell
EOF
}
错误是:
190:191: syntax error: Expected expression but found unknown token. (-2741)
我知道(认为)问题出现在这一行的第一个bash转义序列中:
write text 'echo -ne "\\e]1;$account\\a"'
^
但我不知道为什么会失败...有关为什么这不起作用的任何想法都可以吗?
编辑1:我也试过了,但失败了:
wtf() {
osascript - <<EOF
tell application "iTerm"
tell current terminal
launch session "Railscasts"
tell the last session
write text "echo -ne \\\"\\e]1;$account\\a\\\""
end tell
end tell
end tell
EOF
}
错误讯息:
163:164: syntax error: Expected end of line but found unknown token. (-2741)
答案 0 :(得分:3)
AppleScript不支持'…'
字符串文字。您必须使用"…"
,并使用"…"
转义内部\
对。
此外,它看起来像shell减少了heredocs中的反斜杠序列(!!!),所以你需要在现有的反斜杠上添加更多的反斜杠:
"echo -ne \"\\\\e]1;$account\\\\a\""
答案 1 :(得分:1)
您也可以将<<EOF
替换为<<'EOF'
:
<<'END'
\$` are not interpreted
END
<<END
\$` are interpreted
END
或者只使用单引号:
osascript -e 'tell application "iTerm"
--
end tell'
X=999 osascript -e 'on run argv
item 1 of argv + system attribute "X"
end run' 888