bashとzshの標準出力の扱いのちがい
bashではパイプラインの途中で変数に代入できない? - 計算機と戯れる日々 で苦しんでいたんだがzshなら片づく事が判明。
ほぼbashと使い勝手同じだからなぁ。
パイプ後のreadの扱い。
% bash -c 'echo aaa|read -rd "" s; echo "$s"' % zsh -c 'echo aaa|read -rd "" s; echo "$s"' aaa
zshならパイプによるメソッドチェーンが可能
teeの出力をパイプにまわしたときの扱い
bashは全てをマージするのにzshは分離する。=パイプの間に挟んでデバグ可能
% bash -c 'echo foo| tee >(cat) | sed "s/\(.\)/_\1/"' _foo _foo % zsh -c 'echo foo| tee >(cat) | sed "s/\(.\)/_\1/"' foo _foo
以下のように多重化しても全然問題なし。
% bash -c 'echo foo| tee >(cat) >(sed s/foo/bar/)| sed "s/\(.\)/_\1/"' _foo _foo _bar % zsh -c 'echo foo| tee >(cat) >(sed s/foo/bar/)| sed "s/\(.\)/_\1/"' foo bar _foo
zshにしようかな…いままでがんばってきたんだけどなぁ。