Applescript + Bash:脚本在Applescript编辑器中工作,但不使用osascript

时间:2013-07-18 17:25:34

标签: bash applescript

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

2 个答案:

答案 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