whileループ内で変更された変数は記憶されません
次のプログラムで$fooは、最初のifステートメント内で変数に値1 を設定すると、ifステートメントの後にその値が記憶されるという意味で機能します。ただし、同じ変数をステートメントif内の内の値2に設定するとwhile、whileループの後で忘れられます。ループ$foo内で変数のある種のコピーを使用していて、whileその特定のコピーのみを変更しているように動作しています。ここに完全なテストプログラムがあります: #!/bin/bash set -e set -u foo=0 bar="hello" if [[ "$bar" == "hello" ]] then foo=1 echo "Setting \$foo to 1: $foo" fi echo "Variable \$foo after if statement: $foo" lines="first line\nsecond line\nthird line" echo -e $lines | while read line do if [[ "$line" == "second line" ]] …