문자열의 각 단어에 연속적으로 변수를 할당하는 방법을 제안합니까?
저는 짧은 명령을 찾고 있습니다. 가능하면 한 줄이고 루프는 없습니다. 형태로 되어 있어야 합니다
echo "<sring>" | your_command
예:
- 문자열은 "word1 word2 word3"입니다.
- ,
w1
에 및 에 변수 를 할당하고 싶습니다 .word1
w2
word2
w3
word3
답변1
이것은 작동 하지만 서브쉘에서 실행되기 때문에 ksh93
작동하지 않습니다 .bash
bash
read
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"