2014-05-11 51 views
2

我試圖在我的osascript命令中包含引號' '時遇到了一個奇怪的問題。終端Applescript無法逃脫報價

如果我嘗試逃避一個正常的冒險角色,它可以正常工作。示例:osascript -e 'tell app "Finder" to display dialog "Te\\st"' Finder中的對話框彈出,其中包含文本Test

但是,當我在寫出完整的句子時嘗試使用撇號時會出現問題。例如:osascript -e 'tell app "Finder" to display dialog "Te\'st"'當我運行,這一切我留下的是沒有對話框,並在終端的文本輸入看上去就像這樣:

>

據我所知,這應該通過各種手段的工作,但是,它沒有。

回答

2

你可以這樣來做:

osascript -e "tell app \"Finder\" to display dialog \"'Something' in quotes"\" 
+0

這很棒!謝謝您的幫助 – JamEngulfer

1

只是爲了補充@零的有用的答案(這的確不解決問題):

由於您使用osascript,它是的(bash的)適用引用規則第一

bash(或任何與POSIX兼容的shell),您不能在單引號字符串中包含單引號 - 甚至不會轉義。

你可以做什麼,但是,是打破你的字符串轉換成多個部分,在單引號在需要的地方(躲過了引號的字符串外面\')簡單地拼接:

osascript -e 'tell app "Finder" to display dialog "Te'\''st"' 
  • 'tell app "Finder" to display dialog "Te',第一部分,後面跟着逃脫的單引號\',後面跟着字符串的其餘部分'st"'
  • 憑藉零件之間沒有空格,bash創建了一個單個確實包含拼接文字'的字符串。

它是通常更容易通過 -quoted字符串osascript,因爲雙引號被AppleScript中經常使用的,因此具有封閉在 -quoted字符串時轉義(如在接受的答案)。

在您必須將單引號傳遞給AppleScript的典型罕見事件中,您可以使用本答覆中描述的技術。