トップページ > Linux > 2019年10月31日 > reP6OUR1

書き込み順位&時間帯一覧

11 位/129 ID中時間01234567891011121314151617181920212223Total
書き込み数1001000000000000000000002



使用した名前一覧書き込んだスレッド一覧
login:Penguin
くだらねえ質問はここに書き込め! Part 238

書き込みレス一覧

くだらねえ質問はここに書き込め! 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"

どうすれば配列の要素に上記の結果を代入することができますか?
くだらねえ質問はここに書き込め! Part 238
223 :login:Penguin[]:2019/10/31(木) 03:19:09.95 ID:reP6OUR1
>>213
データを受けた後の一度ちがう処理が入って
その上そのあとプロセス分岐するので、
一度フォーマット整形後に配列に変換して
あとで個別にアクセスしたいと思っていました。
確かにこの方法だと配列に期待した形で代入されました。

>>214 >>215
readarrayは知りまでせんでした。勉強します。

>>218 >>219
これは勉強になります

>>222
> bashで配列に入れたければ頑張れw
がんばりますw
色々な表記方法でありがとうございます。
勉強になります。

みなさまありがとうございました (^人^)感謝♪


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。