プロセス置換 bash の配列要素にアクセスする

プロセス置換 bash の配列要素にアクセスする

次のテキストファイルがあります。

b4238ca2-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress    
b4238f0e-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress
b4239058-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress

注:ユーザー名、パスワード、およびIPアドレスは、機密情報を公開しないようにすべて変更されています。これは私が使用しているテキストファイルの実際の情報です。

私は1行ずつ読み、各項目を配列に入れるために次のbashスクリプトを書いています。以前は動作していましたが、今は交換が進行中であるため、もう機能しません。私はこれが配列要素にアクセスする方法に関連していると仮定していますが、何が間違っているのかはわかりません。スニペットは次のとおりです。

i=0
declare -a devices

while read line
do
    devices[i]=$line
    ((i++))
done < test_data.txt
timestamp=$(date +"%s")
echo "${devices[@]}"
IFS=","
declare -a devarr
for device in "${devices[@]}"
do
    devarr=($device)
    read dateStrNew dateStrOld < <(curl -k -q "${devarr[1]}://${devarr[2]}:${devarr[3]}@${devarr[4]}/camerainfo" | html2text |     gawk '/Newest Sequence/ { new=$3" "$4 }/Oldest Sequence/ {old=$3" "$4}END {OFS=","; print new,old }')

また、前の質問で提案したいくつかの代替コードと調査中に見つかった他のコードの組み合わせに基づいて、次のことを試しましたが、うまくいきませんでした。しかし、これは状況を大幅に単純化します。これが可能で、より良いソリューションですか?

while read -u 3 line
do
    read UUID protocol username passwd ip_address
    curl_call="${protocol}://${ip_address}:${username}@${passwd}/report"
    echo $curl_call

    read dateStrNew dateStrOld < <(curl -k -q "$curl_call" | html2text | gawk'/Newest Sequence/ { new=$3" "$4 }/Oldest Sequence/ {old=$3" "$4}END {OFS=",";print new,old }')

done 3< test_data.txt

とにかく長い夜になるので、どんな助けでも大変感謝します!ありがとうございます!

ベストアンサー1

簡単な構文を理解していますか?

while IFS=',' read -r UUID protocol username passwd ip_address
do
    curl_call="${protocol}://${username}:${passwd}@${ip_address}/report"
    echo $curl_call
done < test_data.txt

おすすめ記事