我刚接触到linux中的shell。
我正在尝试编写一个使用REST方法的shell脚本,并在grafana上创建一些数据源
我需要将网址模块化并从参数中获取。 这是我试图运行的那条线:
srv_url = "1.1.1.1:8080"
RESULT=$(/bin/curl --user admin:admin 'http://localhost:3000/api/datasources' -X POST -H 'Content-Type: application/json;charset=UTF-8' --data-binary '{"name":"Events","isDefault":false ,"type":"influxdb","url":"http://$srv_url","access":"proxy","basicAuth":false}')
你可以看到我正在尝试在里面设置变量$ srv_url(“url”:“http:// $ srv_url”),但它不会取其值,不管我尝试过该脚本使用的是文字名称,而不是它的值。
任何想法?
感谢。
答案 0 :(得分:1)
字符串中的变量替换仅适用于双引号,而不是单引号。这意味着您必须转义字符串中的所有引号或使用单引号:
srv_url = "1.1.1.1:8080"
RESULT=$(/bin/curl --user admin:admin 'http://localhost:3000/api/datasources' -X POST -H 'Content-Type: application/json;charset=UTF-8' --data-binary "{\"name\":\"Events\",\"isDefault\":false ,\"type\":\"influxdb\",\"url\":\"http://$srv_url\",\"access\":\"proxy\",\"basicAuth\":false}")
或者,你可以通过结束单引号字符串并用双引号包装变量来做类似的事情:
RESULT=$(/bin/curl --user admin:admin 'http://localhost:3000/api/datasources' -X POST -H 'Content-Type: application/json;charset=UTF-8' --data-binary '{"name":"Events","isDefault":false ,"type":"influxdb","url":"http://'"$srv_url"'","access":"proxy","basicAuth":false}')
您可以在Bash here中阅读有关字符串和变量替换的更多信息。