while文の中で代入した変数が、whileの外で使えない

例として以下のようなwhile文を実行したとする。
  
A=0
cat test.txt | while read B
do
   A=${B}
done
echo ${A}
 
${B}の内容が表示されるかと思いきや、結果は1番はじめに代入した0が表示される。
 
 
その理由はなぜかというと、

「 |(パイプ)を使うと別プロセスで処理されるため、はじめの変数Aとwhile文の変数Aは別のものとして処理されるから」
 
 
対処法は、|(パイプ)を使わずに以下のように変更ればよい。
 
A=0
while read B
do
   A=${B}
done < cat test.txt
echo ${A}

スポンサーリンク
勉強wikiの下部広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
勉強wikiの下部広告

コメントをどうぞ

メールアドレスが公開されることはありません。

CAPTCHA