次のコードを書きました
var=0
cat $file | while read line do
var=$line
done
echo $var
私が理解しているように、パイプ(|)によってサブシェルが作成されるため、1行目の変数varは最後の行で同じ値になります。
ただし、これで解決します:
var=0
while read line do
var=$line
done < $file
echo $line
私の質問は、リダイレクトによってサブシェルが作成されないのはなぜですか、または必要に応じて、パイプによってサブシェルが作成されるのはなぜですか?
ありがとう