我正试图从酱油实验室获取我的隧道ID ...为了得到这个,我正在做以下事情:
SAUCE_TUNNELL_IDENTIFIER=$(curl https://saucelabs.com/rest/v1/myusername/tunnels -u myusername:mykey)
这会返回["my-tunnel-id"]
所以我想摆脱[]并导出我的隧道ID ..
以下是[]
export SAUCE_TUNNELL_IDENTIFIER=$(echo $SAUCE_TUNNELL_IDENTIFIER | awk '{print substr($0, 2, length($0) -2)}')
当我执行export -p
时,我会看到"\"my-tunnel-id\""
但如果我只是做echo $SAUCE_TUNNELL_IDENTIFIER
,我在变量中看不到exta "\
。这是从哪里来的?此外,任何帮助使这成为一个更好的命令也将不胜感激! :)
答案 0 :(得分:3)
服务器返回一个JSON数组;你可以使用像jq
这样的东西来提取数组中的单个元素,但是对于这个简单的东西,你可以使用参数扩展。
$ SAUCE_TUNNELL_IDENTIFIER=$(curl https://saucelabs.com/rest/v1/myusername/tunnels -u myusername:mykey)
$ SAUCE_TUNNELL_IDENTIFIER=${SAUCE_TUNNELL_IDENTIFIER//[]\"[]}
$ echo "$SAUCE_TUNNELL_IDENTIFIER"
my-tunnel-id
更新
我认为标识符不能包含括号或引号。更安全但更长的替代方法是逐个删除每个外部字符。
$ STI=$(curl ...)
$ STI=${STI#[}
$ STI=${STI#\"}
$ STI=${STI%]}
$ STI=${STI%\"}
此时我还可以展示如何使用jq
来执行此操作:
$ curl ... | jq -r '.[0]'
my-tunnel-id
.
表示传入的JSON; [0]
提取第一个元素; -r
告诉jq
输出原始字符串而不是引用的JSON字符串(my-tunnel-id
而不是"my-tunnel-id"
)。