我在家写了一些脚本,但现在面临变量引用的问题。我读过很多帖子,但命令的大小以及如何最好地分解它让我感到困惑,我真的很感激一些建议。
我要执行的命令是;
curl -sk -H "X-API-Key: THisIsAnExampleAPIKey " -X GET "https://127.0.0.1:8384/rest/stats/device" | jq '."THIS-IS-A-DEVICE-ID-QDGRSIO-NDOGYJB-2RV6RAW".lastSeen' | cut -d "T" -f 1 | tr -d '"'
理想情况下,我希望我的脚本可以重复使用,因为我可以传入设备 ID 字符串作为参数。
有人可以指出如何最好地分解这个命令吗?
我尝试分解命令,直接的问题是 jq 命令,因为在 shell 中运行时需要引用设备 ID
您可能对双引号 (
"
) 和单引号 ('
) 之间的区别感到困惑。
bash
在单引号之间不进行变量扩展,但在双引号之间进行变量扩展:
a=hoppa
echo '$a'
$a
echo "$a"
hoppa
如果您想在带有变量的字符串中使用双引号,请在其前面加上反斜杠:
echo "hoppa=\"$a\" as you see"
hoppa="hoppa" as you see
因此,您的
curl
和 jq
将变为:
apikey='THisIsAnExampleAPIKe'
devid='HIS-IS-A-DEVICE-ID-QDGRSIO-NDOGYJB-2RV6RAW'
url='https://127.0.0.1:8384/rest/stats/device'
curl -sk -H "X-API-Key: $apikey " -X GET "$url" |
jq ".\"$devid\".lastSeen" |
cut -d "T" -f 1 |
tr -d '"'