我怎样才能让下面的命令生效。
export CURDATE=`date +%Y-%m-%d`
curl -XPOST "http://localhost:9200/test/type" \
-d ' { "AlertType": "IDLE", "@timestamp": $CURDATE }'
我收到错误“reason”:“无法识别的标记“$CURDATE”:应为”
如何在上面的代码中更正变量替换
最佳答案
单引号不会展开变量,请使用双引号:
curdate=$(date +'%Y-%m-%d')
curl -XPOST "http://localhost:9200/test/type" \
-d '{"AlertType": "IDLE", "@timestamp": "'"$curdate"'"}'
我还添加了扩展周围的JSON引号,使其变得类似:
{"AlertType": "IDLE", "@timestamp": "2016-05-23"}
不需要导出变量。通常只有环境变量被写为大写。最后我把命令替换改成了
$(...)
'{"AlertType": "IDLE", "@timestamp": "'"$curdate"'"}'
# ^^
# |End singlequotes
# JSON quote
关于bash - 命令中的Shell变量替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37398281/