[key]セクションの文字列を使用して、キーと値を含む単純な配列を繰り返すことはできますか?
#!/bin/bash -x
wget url://stringlist1
wget url://stringlist2
#cat/sed some stuff ....
declare -A targetarray
loop $resultfromstringlist1
in strlistarray1 # filled with ( aka1 kaka hu3hu blabla )
loop $resultfromstringlist2
in strlistarray2 # filled with ( Thoralf Mirkoslav Pjotr Jan )
i=0;
for e in strlistarray1
do
targetarray[$e]="${strlistarray2[$i]}"
((++i))
done
#wanted output
echo ${targetarray[aka1]} -> Thoralf
exit
もう少し明確になってほしい
$ eは、strlist1配列の文字列で埋められていない$ eに残ります。
手動設定機能ありただし、ループはサポートされていません。 bashのバージョンは4.3です。
#!/bin/bash
unset aaaa
declare -A aaaa
str1="hans"
str2="klaus"
aaaa[$str1]="online";
aaaa[$str2]="offline";
echo ${aaaa[$str1]}
答え1
targetarray
これは、2つの単純な配列のキーと値を使用して連想配列を埋め、クエリする方法を示していますstrlistarray1
。strlistarray2
#!/bin/bash
declare -a strlistarray1=( aka1 kaka hu3hu blabla )
declare -a strlistarray2=( Thoralf Mirkoslav Pjotr Jan )
declare -A targetarray
i=0
for e in "${strlistarray1[@]}"; do
targetarray["$e"]="${strlistarray2[i]}";
((i++))
done
for e in "${!targetarray[@]}"; do
echo $e --- ${targetarray[$e]}
done
ファイルの内容を取得するには(1行に1つの項目を想定)、次のようにします。
IFS=$'\n'
declare -a strlistarray1=($(< yourfile))
unset IFS
URLからデータを取得するには:
IFS=$'\n'
declare -a strlistarray1=($(wget -qO - 'http://yoururl'))
unset IFS
(IFS
空白を含むデータを取得する問題を回避するには、この設定が必要です。質問のように入力データに空白がないと確信している場合は、IFS
これら2つの文を省略できます。)