我正在尝试在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 命令但是没有工作
答案 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
另见: