假設我想使用 bash 腳本創建一個檔案,因此創建檔案的命令將是這樣的:
myscript hostgroup_one 2
hostgroup_one數字2是引數。
如何在下面的行中插入引數并將所有行作為檔案輸出?
{
"bool": {
"should": [
{
"match_phrase": {
"hostgroup.keyword": "$1"
}
}
],
"minimum_should_match": $2
}
}
uj5u.com熱心網友回復:
我會用 jq 構建 JSON:
jq -n \
--arg hostgroup "$1" \
--argjson minimum "$2" \
'{bool: {should: [{match_phrase: {"hostgroup.keyword": $hostgroup}}], minimum_should_match: $minimum}}'
將產生您想要的輸出。
uj5u.com熱心網友回復:
雖然jq是操作 json 的好工具,正如 glenn jackman 所建議的,如果您沒有它并且您的系統管理員不會安裝它(?!?)...
您可以使用“此處檔案”
你myscript可能看起來像這樣:
#!/bin/bash
echo "dollar-1 is '${1}' dollar-2 is '${2}' dollar-3 is '${3}'"
cat <<EOF >"${1}"
{
"bool": {
"should": [
{
"match_phrase": {
"hostgroup.keyword": "${2}"
}
}
],
"minimum_should_match": ${3}
}
}
EOF
echo "done"
我已經將輸出檔案名作為第一個引數,然后是你的兩個引數,所以它會像這樣運行:
myscript output.json hostgroup_one 2
您不需要這樣做,您可以使用 2 個引數并重定向輸出:
myscript hostgroup_one 2 > output.json
(請注意,您不必將其EOF用作此處的檔案分隔符,我只是喜歡它)
當然你不需要這些echo陳述句,你應該有錯誤檢查(是否${#}等于 3 個引數?)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372402.html
上一篇:為PSQL命令添加換行符
