我正在尝试在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将不会扩展字符串内的变量引用。单引号字符串中没有转义字符。下一个单引号无条件地结束字符串,不管反斜杠或任何其他“转义”字符。 –