Shell-Script
將變數導入jq
我們需要在以下命令中使用變數
$domain_name
而不是字元串:hyb.com``jq
jq --argjson IDS '['"$(seq -s, -f'"car%02.0f_hyb.com"' 11)"']' ' .mazda |= $IDS ' file.json
當我們只是將變數設置為
export domain_name=_hyb.com jq --argjson IDS '['"$(seq -s, -f'"car%02.0f$domain_name "' 11)"']' ' .mazda |= $IDS ' file.json
然後導出的變數
domain_name
是看不到的jq
。有沒有關於如何將變數導入的建議jq
?
您正在使用
$domain_name
單引號。這就是 shell 不擴展變數的原因。不過,在這種情況下,我建議以稍微不同的方式進行操作:
jq
提供從 shell 導入原始數據的安全方法:jq '.mazda |= $ARGS.positional' file.json --args car{00..11}"$domain_name"
這將在命令行
mazda
之後插入帶有從列表中獲取的值的鍵。--args
和--args
值列表應位於命令行的最後。這些值將根據jq
需要進行 JSON 編碼。這通常比嘗試從可能來自外部源的數據自己創建正確的 JSON 更好(例如,如果您要插入的數據包含製表符或換行符或雙引號,jq
則將這些正確地編碼為 JSON 字元串--args
)。該列表是使用大括號展開生成的。假設您使用的是
bash
版本 4 或更高版本,則生成的數字{00..11}
將正確填零。請注意,
domain_name
不需要是環境(導出)變數。