ここに私のサンプル片があります。
text="Var 1 is ${one}, Var 2 is ${two}, Var 3 is ${three}"
for (( i=0 ; i<1 ; i++ ))
do
one="one"
two="two"
three="three"
echo "${text}"
done
返品
Var 1 is , Var 2 is , Var 3 is
コードを次のように変更すると、期待どおりに機能します。
text="Var 1 is ${one}, Var 2 is ${two}, Var 3 is ${three}"
for (( i=0 ; i<1 ; i++ ))
do
one="one"
two="two"
three="three"
echo "Var 1 is ${one}, Var 2 is ${two}, Var 3 is ${three}"
done
答え1
これは、「text」変数が設定されている場合、他のすべての変数が空であり、デフォルトは空の文字列「」であるために発生します。
text
コマンドを発行するときに設定し、( ")の代わりに( ")として保存して、bashが式を評価しないようにします。
$ text='echo "var1 = $one var2 = $two"'
$ one=hi
$ two=bye
それからeval $text
戻ってくるでしょうvar1 = hi var2 = bye