在shell脚本中设置变量以在外部用于下一个命令

时间:2017-05-24 00:27:52

标签: shell

我正在尝试在shell脚本中使用Shell变量,我的shell脚本如下所示

HerculesResponse=$(curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{ "testID": "591dc3cc4d5c8100054cc30b", "testName": "stagetest", "poolID": "5818baa1e4b0c84637ce36b4", "poolName": "Default", "dashboardID": "582e3a2ff5c650000124c18a", "dashboardName": "Default", "dateCreated": "2017-05-23T13:51:23.558Z", "callbackHeader": {}, "active": true }' "https://example.com:8080/run") reportURL=$(expr "$HerculesResponse" : '.*"reportURL":"\([^"]*\)"') echo $reportURL runId=$(echo $reportURL | cut -d"=" -f 2) echo $runId

如何在此shell脚本之外使用runId变量来运行命令

testStatus=$(curl -X GET https://example.com:8080/runs/$runId)

我尝试使用 export runId 命令但是没有工作

1 个答案:

答案 0 :(得分:1)

当您运行shell脚本时,由其设置的变量在执行完成后将丢失,并且它们将无法用于调用shell。提取变量值的正确方法是:

  • 让脚本输出变量的值并使用命令替换将该值赋给调用shell中的变量,如下所示:

    run_id=$(/path/to/script.sh)
    

这种方法的缺点是脚本的所有输出将最终出现在变量中。在您的情况下,echo $reportURL以及echo $runId的输出。

  • 使用.source命令在当前shell中运行脚本,如下所示:

    . /path/to/script.sh
    

    source /path/to/script.sh
    

另见: