0

我有这个运行一些 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)
4

2 回答 2

3

AppleScript 不支持'…'字符串文字。您必须使用"…", 并转义内部的"…"with \

此外,看起来 shell 减少了 heredocs (!!!) 中的反斜杠序列,因此您需要在现有反斜杠上添加更多反斜杠:

"echo -ne \"\\\\e]1;$account\\\\a\""
于 2013-07-18T17:39:11.633 回答
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
于 2013-07-19T05:47:53.057 回答