awkを使用してフィールドをユーザー入力と照合する次のスクリプトがあります
NB=$#
FILE=myfile
#GET INPUT
if [ $NB -eq 1 ]
then
A=`awk -F "\t" -v town="$1" 'tolower($3) ~ tolower(town) {print NR}' $FILE`
fi
出力を印刷すると、次のようになります。
7188 24369 77205 101441
それは私が期待したことです。次に、次のことを行うと:
IFS=' '
array=($A)
echo ${#array[@]}
私は実際に1(?)の長さを取得します。さらに、私が試してみると:
for x in $array
do
echo $x
done
実際に印刷されます:
7188
24369
77205
101441
for...in
どうすれば4の長さを返すことができますか?要素が1つしかない場合、どのように機能するのかわかりませんか?
編集 :
$A | od -c
配列を作成する前のエコーは次のとおりです。
0000000 7 1 8 8 2 4 3 6 9 7 7 2 0 5
0000020 1 0 1 4 4 1 \n
0000030
$A | od -c
配列を作成した後のエコーは次のとおりです。
0000000 7 1 8 8 \n 2 4 3 6 9 \n 7 7 2 0 5
0000020 \n 1 0 1 4 4 1 \n
0000030