以下の内容はhttps://iww.hateblo.jp/entry/2021/03/24/111612より取得しました。


bashで whileの中でevalを使う

for文で出来る

for x in A=hoge B=piyo; do
    eval $x
done

echo A=$A
echo B=$B
A=hogeA
B=hogeB

while文でこう書くとアウト

echo -e "A=hoge\nB=piyo" | while read x; do
    eval $x
done
A=
B=

なぜなら、パイプを使っているから。
サブシェルになるので変数はどっか行ってしまう

while文でやりたいときは、どうにかパイプを使わずに直接食わせれば良い

while read x; do
    eval $x
done < <(echo -e "A=hoge\nB=piyo")
while read x; do
    eval $x
done << __EOF__
A=hoge
B=piyo
__EOF__


参照:
bash - Why can't I eval inside a while loop? - Stack Overflow
eval でハマった話 : ミヤタ コウヘイ@エンジニア | PRESS [プレス] : Instagram [インスタグラム] を利用したブログサービス
shell - While-loop subshell dilemma in Bash - Stack Overflow
シェルスクリプトのwhile文の中の変数を外で使う方法 - Qiita




以上の内容はhttps://iww.hateblo.jp/entry/2021/03/24/111612より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14