的問題是,單引號裏面,有沒有特殊的元字符,所以$monday1
傳遞給osascript
不變。所以,你必須確保$monday1
不在單引號內。
選項包括:
monday1=5
osascript -e 'tell application "System Events" to keystroke "'$monday1'"'
monday1=5
osascript -e 'tell application "System Events" to keystroke "'"$monday1"'"'
monday1=5
osascript -e "tell application \"System Events\" to keystroke \"$monday1\""
monday1=5
osascript -e "tell application 'System Events' to keystroke '$monday1'"
首先停止單引號只是雙引號包圍擊鍵後,嵌入的$monday
值,並恢復單報價爲剩餘的雙引號。這是可行的,因爲$monday1
中沒有空格等。
第二個與第一個類似,但在雙引號中圍繞着"$monday1"
,所以即使$monday1
包含空格,它也可以工作。
第三個用雙引號括起整個參數,並且轉義每個嵌入的雙引號。如果你對反斜槓不敏感,這很好。
第四個可能會也可能不會工作 - 這取決於osascript
程序是否對圍繞其參數的引號類型敏感。它只是顛倒了雙引號和單引號的使用。 (這工作只要外殼而言Gordon Davisson在comment是osascript
需要雙引號,並且不接受單引號觀察到的,所以它不會因爲被調用的程序規則的工作 - 。osascript
)
在第三種情況和第四種情況下,如果需要保護字符串的其他部分以便shell不擴展信息,則需要小心。一般來說,單引號更好,所以我會使用前兩個選項之一。
你可以使用反斜槓(\\)逃避$符號,看看是否有幫助嗎? –
@ArunR:使用反斜槓'\''轉義'$'不起作用,因爲單引號字符串中沒有轉義字符。 –