我正在嘗試在bash腳本內執行cURL命令以發佈到URI。該命令要求其中一個參數被雙引號和單引號括起來,即'"jsimmons"'
在我的腳本中,但是這個參數是一個變量,所以命令一直失敗,我相信這是因爲變量做了一些奇怪的擴展,並且命令丟失了引號必要。用多個引號擴展bash變量?
對於我當前的嘗試,這是行不通的,參數看起來像'""$watcher""'
,因爲我試圖展開該變量並將該字符串放在雙引號和單引號內。
如何正確地擴展我的變量以滿足命令的要求?
我正在嘗試在bash腳本內執行cURL命令以發佈到URI。該命令要求其中一個參數被雙引號和單引號括起來,即'"jsimmons"'
在我的腳本中,但是這個參數是一個變量,所以命令一直失敗,我相信這是因爲變量做了一些奇怪的擴展,並且命令丟失了引號必要。用多個引號擴展bash變量?
對於我當前的嘗試,這是行不通的,參數看起來像'""$watcher""'
,因爲我試圖展開該變量並將該字符串放在雙引號和單引號內。
如何正確地擴展我的變量以滿足命令的要求?
如果你在整個命令周圍有雙引號,你可以毫無困難地插入單引號,但是需要加雙引號。
例如:
$ watcher=jsimmons
$ echo "'\"$watcher\"'"
'"jsimmons"'
我懷疑單引號實際上並不必要,除了確保雙引號逐字傳遞之外。 – chepner
可以逃避周圍'
S和"
s的\
\'\"$watcher\"\'
你期望'\''做什麼? –
如果它們未被轉義,'$ watcher'變量不會被擴展,因此它會導致'\「$ watcher \」'。 ''''也不會擴大,因爲「在單引號內,除'''之外的每個特殊字符都被字面解釋,」http://tldp.org/LDP/abs/html/quotingvar.html – Kyriakos
ATLEAST粘貼代碼的相關部分,你所面臨的 – Fazlin
XY錯誤問題:你是否試圖對字符串「jsimmons」進行JSON編碼? – chepner
如果最外層的引號是單引號,那麼當前shell將不會擴展字符串內的變量引用。單引號字符串中沒有轉義字符。下一個單引號無條件地結束字符串,不管反斜槓或任何其他「轉義」字符。 –