【发布时间】:2016-07-24 17:37:41
【问题描述】:
我看过这个话题:single quote escaping in applescript/shell 虽然很有帮助,但并不能完全解决我的问题。这个 AppleScript sn-p 说明了这个问题:
set lastName to "O'Donnell"
set lastScript to "/usr/libexec/PlistBuddy /Users/david/.name.plist -c 'Set Last '" & quoted form of (lastName & "'")
display dialog lastScript
do shell script lastScript
我的主文件夹中的属性列表文件“.name.plist”包含一个键“Last”,用于存储名称“O'Donnell”。变量 lastScript 被传递为:
/usr/libexec/PlistBuddy /Users/david/.name.plist -c 'Set Last ''O'\''Donnell'\'''
脚本执行,但“Last”设置为“ODonnell”,没有重要的撇号。这可以通过在 shell 中运行以下命令来演示:
/usr/libexec/PlistBuddy /Users/david/.name.plist -c 'Print Last'
PlistBuddy 可以在交互模式下运行:
/usr/libexec/PlistBuddy /Users/david/.name.plist
命令:
'Set Last O\'Donnell'
成功保存名称。我做错了什么?
【问题讨论】:
-
你已经回答了你的问题,包含双引号的唯一方法是转义它。
-
我测试了你的脚本,它似乎有效,我只是
display dialoged 引用的部分,然后在终端中回显它,它有效
标签: bash shell applescript