如何在变量中分解和引用复杂命令

问题描述 投票:0回答:1

我在家写了一些脚本,但现在面临变量引用的问题。我读过很多帖子,但命令的大小以及如何最好地分解它让我感到困惑,我真的很感激一些建议。

我要执行的命令是;

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 variables
1个回答
0
投票

您可能对双引号 (

"
) 和单引号 (
'
) 之间的区别感到困惑。

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 '"'
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.