여기 내 샘플 조각이 있습니다.
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