在bash -c中运行osascript
我正在开发一个Sublime Text的插件(用Python写),里面有一些shell脚本。因为Package Control会给你打包成压缩文件,所以这些脚本不能直接从压缩包中运行。因此,我把它们存储为字符串,然后用subprocess.Popen和bash -c来运行。这个脚本在Mac上需要用到osascript,但我在从字符串中运行它时遇到了麻烦。脚本中osascript的部分如下(前面的部分都能正常工作):
osascript <<END
tell application "Terminal"
tell window 1
activate
set w to do script "clear; bash -c \"ssh -t $simulator_user@$simulator_host '$token $build_args'; echo; echo Press any key to continue; read -n 1; exit\""
end tell
end tell
END
到目前为止,我已经成功实现了第一个activate
语句,使用的是osascript -e 'tell application "Terminal" to tell window 1 to activate';
,但是第二个语句让我很头疼,主要是因为里面有很多引号。我一直在用Python的"""三重引号"""
格式来写字符串。我能做到的最远的就是这样的:
script = """"clear; bash -c "ssh -t $simulator_user@$simulator_host '$token $build_args'; echo; echo Press any key to continue; read -n 1; exit"\""""
darwin_osa2 = """osascript -e 'tell application "Terminal" to tell window 1 to set w to do script {}';""".format(script)
但我遇到了像“83:87: 语法错误:标识符不能在这个“"”后面。”(-2740)这样的错误,还有其他一些不太明确的错误。有没有人知道如何正确格式化第二个语句,以便与bash -c一起使用(或者更好的是,有没有更简单的方法来运行它)?
1 个回答
0
你可以创建一个叫 .no-sublime-package
的文件,这样 Package Control 就会把压缩包解压出来。这样你就可以添加脚本并执行它们了。