
다음 명령의 경우 입력에 몇 개의 단어가 주어졌는지 어떻게 알 수 있나요?
$ read text
입력 "텍스트"의 단어 수를 계산하는 새 변수를 사용하고 싶습니다. 예를 들어,
$ read text
apple
변수가 x이면 해당 값은 "1"입니다.
다음을 위해,
$read text
apple banana
'x'의 값은 2입니다.
답변1
즉각적인 bash 옵션도 있습니다. -a
다음 옵션을 사용하십시오 read
.
read -a text
echo "The input '${text[@]}' contains ${#text[@]} words."
이 -a
옵션을 사용하면 변수는 일반적인 IFS 구분 기호를 사용하여 얻은 단어 배열입니다. 자세한 내용은 man bash
내장 명령을 참조 하세요.
답변2
또 다른 접근 방식은 다음과 같습니다. 기존 변수를 읽고 POSIX 표준을 사용합니다.set
유틸리티를 쉘의 표준 변수 확장 메커니즘과 함께 사용하고 결과 요소 수를 다음에 할당합니다 x
.
read text
set -f ## disable filename generation ("globbing")
set -- $text
x=$#
답변3
wc -w
단어 수를 세는 데 사용할 수 있습니다 . (이것을 봐주세요 man wc
.)
$ read text
apple banana
$ echo $text
apple banana
$ echo $text|wc -w
2
$ x=$(echo $text|wc -w)
$ echo $x
2
$ echo "The input '$text' contains $x words."
The input 'apple banana' contains 2 words.