bash: 변수를 솔리드 문자열로 설정할 수 없습니다.

bash: 변수를 솔리드 문자열로 설정할 수 없습니다.

다음과 같이 전체 명령 문자열을 사용하여 변수를 설정할 수 없습니다.

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" 루프는 당신이 원하지 않는 방식으로 그것을 깨뜨립니다.

관련 정보