bashではパイプラインの途中で変数に代入できない?
bashではパイプラインの途中で変数に代入できない?
$ a=1;echo abc | sed s/a/b/ | read a; echo $a; 1 $ a=1;echo abc | sed s/a/b/ | { read a; echo $a; } bbc $ a=1;echo abc | sed s/a/b/ | ( read a; echo $a; ) bbc $ a=1;a=`echo abc | sed s/a/b/`; echo $a bbc $ a=1;echo abc | sed s/a/b/ | { read a; } ;echo $a 1
バッククオートしか解がないのか?
わけがわからないのは以下
$ a=1 ; { a=2; } ; echo $a 2 $ a=1 ; echo -n 2 | { read a; } ; echo $a 1
readのときだけ挙動が変わるw
変数に代入するリダイレクトが欲しい!
原因はパイプのときforkするから。
http://www.nurs.or.jp/~asada/FAQ/UNIX/section3.8.html
追記 2009/03/12 10:42:10:
bashとzshの標準出力の扱いのちがい - 計算機と戯れる日々にてzshなら解決することが判明