【问题标题】:Centos sh - planting a variable in a execute command [duplicate]Centos sh - 在执行命令中植入变量[重复]
【发布时间】:2018-05-03 14:17:43
【问题描述】:

我是 linux 中的 shelling 新手。

我正在尝试编写一个使用 REST 方法并在 grafana 上创建一些数据源的 shell 脚本

我需要将 url 模块化并从参数中获取。 这是我要运行的行:

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}')

如您所见,我正在尝试在 ("url":"http://$srv_url") 中植入变量 $srv_url,但无论我使用什么,它都不会获取它的值尝试脚本使用它的文字名称,而不是它的值。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: bash shell rest sh centos7


    【解决方案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 中阅读有关字符串和变量替换的更多信息。

    【讨论】:

      猜你喜欢
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 2023-04-07
      • 2010-11-16
      • 2021-10-13
      • 2015-11-17
      相关资源
      最近更新 更多