0216login:Penguin
2019/10/31(木) 01:19:51.44ID:hpOp+iT/シェルスクリプトはパイプで処理をつなげていくものだ
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"
}