- 218 名前:login:Penguin mailto:sage [2019/10/31(木) 01:19:51.44 ID:hpOp+iT/.net]
- readarrayもbashの拡張だ。そういうものは使わない
シェルスクリプトはパイプで処理をつなげていくものだ declare -a array=( "A B C" "C D E" "F G H" ) printf '%s\n' "${array[@]}" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' | while read -r line; do echo "$line" # $lineの加工処理とかなにか done こうすることで、出力とawkの加工と自前のreadの処理が並列で動く readarrayなどを使ってしまったら、一旦bashの配列に入れてしまうから 並列で動かなくなる。つまり遅くなる。 | while read はパイプでサブシェルになってしまって動かないから例も置いとく printf '%s\n' "${array[@]}" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' | { i=0 while read -r line; do i=$((i + 1)) echo "$line" # $lineの加工処理とかなにか done echo "合計行数 $i" }
|

|