在单引号外壳脚本中扩展变量

时间:2019-09-22 22:15:26

标签: shell

我需要能够使用${var}保留命令所需的单引号。 我曾尝试通过串联'"${var}"'来转义单引号,但由于未保留单引号,命令给出了错误。

$COMMAND '[{"name": "john", "tel": ${var}}]'

2 个答案:

答案 0 :(得分:0)

我认为您的命令不需要“要求”该JSON周围的单引号 串。这是一个需要他们处理整个JSON的外壳 字符串作为单个单词并将其传递给$COMMAND

有2种在JSON字符串中使用它的方式(我将var设置为999):

$ echo command "[{\"name\": \"john\", \"tel\": ${var}}]"
command [{"name": "john", "tel": 999}]

或:

$ echo command '[{"name": "john", "tel": '"${var}"'}]'
command [{"name": "john", "tel": 999}]

但是,如果您的命令确实需要用单引号引起来的JSON字符串,请执行以下操作:

"'[{\"name\": \"john\", \"tel\": ${var}}]'"

此外,可能不需要[]

"{\"name\": \"john\", \"tel\": ${var}}"  

答案 1 :(得分:0)

除了“ $ {var}”外,您都应该引用它。

var=999
$COMMAND '[{"name": "john", "tel": "'${var}'"}]'