データベースからレコードセットを取得しているUbuntu bashのサイクルで変数を設定しようとしていますが、この変数は以前の値に設定されています。コードは次のとおりです。
#!/bin/bash
PREV_FILE_PATH="127"
while true
do
echo "$PREV_FILE_PATH"
mysql -h$DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME --skip-column-names --default-character-set=UTF8 -e "here is a query" | while read "here is getting variables from recordset";
do
PREV_FILE_PATH="777"
done
done
そして、このコードは毎回出力します:
127 127 127
しかし、私はこのブロックを置き換えました-:
mysql -h$DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME --skip-column-names --default-character-set=UTF8 -e "here is a query" | while read "here is getting variables from recordset";
サイクルの最後にjustwhile true
と break を使用すると、正常に動作し、次のように出力されます。
127 777 777 777
スクリプトはいくつかのサブシェルを作成し、そのサブシェルでその MySQL クエリを実行します。では、スクリプトでその変数を変更するにはどうすればよいでしょうか?