문자열의 각 단어에 변수를 할당하는 방법

문자열의 각 단어에 변수를 할당하는 방법

문자열의 각 단어에 연속적으로 변수를 할당하는 방법을 제안합니까?

저는 짧은 명령을 찾고 있습니다. 가능하면 한 줄이고 루프는 없습니다. 형태로 되어 있어야 합니다

echo "<sring>"  | your_command

:

  • 문자열은 "word1 word2 word3"입니다.
  • , w1에 및 에 변수 를 할당하고 싶습니다 .word1w2word2w3word3

답변1

이것은 작동 하지만 서브쉘에서 실행되기 때문에 ksh93작동하지 않습니다 .bashbashread

echo "word1 word2 word3" | read w1 w2 w3
printf '"%s"\n' "$w1" "$w2" "$w3"

즉,할 수 없다파이프라인의 일부로 할당이 있습니다 bash.

해결 방법은 서브쉘을 파이핑하기 전에 변수를 사용하는 것입니다.

echo "word1 word2 word3" | { read w1 w2 w3 && printf '"%s"\n' "$w1" "$w2" "$w3"; }

또는,

echo "word1 word2 word3" | {
  read w1 w2 w3
  printf '"%s"\n' "$w1" "$w2" "$w3"
}

이는 두 쉘 모두에서 작동합니다.

read w1 w2 w3 <<<"word1 word2 word3"
printf '"%s"\n' "$w1" "$w2" "$w3"

관련 정보