- くだらねえ質問はここに書き込め! Part 238
209 :login:Penguin[]:2019/10/31(木) 00:50:56.71 ID:reP6OUR1 - bashの配列で質問です。
空白で区切られた3つの要素を配列に代入 declare -a array=( "A B C" "C D E" "F G H" ); for ((i = 0; i < ${#array[@]}; i++)) { echo "array[$i] = ${array[i]}" } 結果は予想通り array[0] = A B C array[1] = D E F array[2] = G H I 今度は改行で区切られた3つの要素の内容を、awkで逆順した結果に「"」とつけて配列に代入。 declare -a array=( $(echo -e "A B C\nD E F\nG H I" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}') ); for ((i = 0; i < ${#array[@]}; i++)) { echo "array[$i] = ${array[i]}" } しかし、実際はクォーテーションの機能も無視され、空白でバラバラに区切られ配列に代入されてします。 array[0] = "C array[1] = B array[2] = A" … 略 … array[7] = H array[8] = G" 配列に代入しなければ期待通りの結果が出力されます。この結果を望んでいます。 echo -e "A B C\nD E F\nG H I" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' "C B A" "F E D" "I H G" どうすれば配列の要素に上記の結果を代入することができますか?
|