다음과 같이 전체 명령 문자열을 사용하여 변수를 설정할 수 없습니다.
A="/bin/ps wwwaux"
for a in $A
do
echo "$a"
done
어떻게 든 솔리드 문자열 대신 배열을 할당합니다.
내 환경:
GNU/Linux, GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu)
답변1
for 루프에는 목록이 필요합니다:
for a in $A; do
echo "$a"
done
확장:
for a in /bin/ps wwwaux; do
echo "$a"
done
순서대로 인쇄됩니다. 루프는 두 번 실행됩니다.둘논쟁. 출력은 다음과 같습니다:
/bin/ps
wwwaux
대신 따옴표를 사용하세요.
for a in "$A"; do
echo "$a"
done
이는 다음으로 확장됩니다.
for a in "/bin/ps wwwaux"; do
echo "$a"
done
그대로 한 번 반복됩니다하나토론. 출력은 다음과 같습니다.
/bin/ps wwwaux
답변2
for f in "$A"
do
echo $f
done
당신의 과제는 이미 당신이 원하는 것을 하고 있습니다 - "for" 루프는 당신이 원하지 않는 방식으로 그것을 깨뜨립니다.