2014-01-17 191 views
1

在下面的例子中(这我是从PagerDuty网页):bash的变量

machine="hi" curl -H "Content-type: application/json" -X POST \
-d "{ \"service_key\": \"e93facc04764012d7bfb002500d5d1a6\", \"description\": \"FAILURE for production/HTTP on machine $machine\" }" \
"https://events.pagerduty.com/generic/2010-04-15/create_event.json"

我想在这样的描述使用变量:

"description": "FAILURE for $machine", 

但是它不工作,它只显示我"FAILURE for $machine", 我试过"FAILURE for ${machine}",但它不工作。你知道如何解决它吗?

+0

这个问题没有意义。您不应该编辑问题以消除对答案的需求。请回到第2版;版本3中的编辑是完全错误的。 – cnst

回答

1

问题是,使用使用单引号。您需要使用双引号和逃生和双引号的字符串:

curl -H "Content-type: application/json" -X POST \ 
-d "{  
    \"service_key\": \"e93facc04764012d7bfb002500d5d1a6\", 
    ... 
    \"description\": \"FAILURE for production/HTTP on machine $machine\" 
}" \ 
"https://events.pagerduty.com/generic/2010-04-15/create_event.json" 

相当繁琐,但它会做的工作。

+0

谢谢为什么要这样做的服务密钥? – Sara

+0

只是为了展示一个例子。如果在字符串中使用双引号,则需要在文本中跳过任何“ –

+0

它无法正常显示我{”状态“:”无法识别的对象“,”消息“:”事件对象格式无法识别“,”错误“: [“JSON parse error”]} T – Sara