是否可以使用數組值作爲變量? 例如,我有這個腳本:Bash數組值作爲變量
#!/bin/bash
SOURCE=$(curl -k -s $1 | sed 's/{//g;s/}//g;s/,/"\n"/g;s/:/=/g;s/"//g' | awk -F"=" '{ print $1 }')
JSON=$(curl -k -s $1 | sed 's/{//g;s/}//g;s/,/"\n"/g;s/:/=/g;s/"//g' | awk -F"=" '{ print $NF }')
data=$2
readarray -t prot_array <<< "$SOURCE"
readarray -t pos_array <<< "$JSON"
for ((i=0; i<${#prot_array[@]}; i++)); do
echo "${prot_array[i]}" "${pos_array[i]}" | sed 's/NOK/0/g;s/OK/1/g' | grep $2 | awk -F' ' '{ print $2,$3,$4 }'
done
編輯:
我只是說:grep $2 | awk -F' ' '{ print $2,$3,$4 }'
用法:
./json.sh URL
樣品(很短)輸出:
DATABASE 1
STATUS 1
我不想回顯所有行,我想使用DATABASE STATUS作爲變量$ DATABASE並將其回顯出來。 我只需要命令行中的DATABASE(或任何其他)值。 是否有可能使用這樣的東西?
./json.sh URL $DATABASE
如果需要,可以多解釋一下。
編輯: 沒有任何打印格式等捲曲輸出:
{
"VERSION":"R3.1",
"STATUS":"OK",
"DATABASES":{
"READING":"OK"
},
"TIMESTAMP":"2017-03-08-16-20-35"
}
輸出使用腳本:
VERSION R3.1
STATUS 1
DATABASES 1
TIMESTAMP 2017-03-08-16-21-54
我想是前文所述。例如使用數據庫varible $ DATABASE,並以某種方式獲取的值 「1」
編輯:
./json.sh https://gitlab.uwe.ac.uk/dc2-roskilly/angular-qs/raw/master/.npm/nan/2.4.0/package/package.json
最後輸出:從uconn.edu
./json.sh https://github.uconn.edu/raw/nam12023/novaLauncher/master/manifest.json
另一個
隨機JSON開始於:
name nan
version 2.4.0
從命令行:./json.sh URL版本
在leats它適用於我。
爲什麼不能使用正確的'JSON'解析器來處理'cURL'的json輸出?而不是'sed'?它使你的任務變得更簡單。 – Inian
請發佈你的'curl'輸出和你正在尋找的確切輸出 – Inian
請更新它作爲問題的一部分,並從評論中刪除 – Inian