"읽기" 명령에 입력된 단어 수를 어떻게 알 수 있나요?

"읽기" 명령에 입력된 단어 수를 어떻게 알 수 있나요?

다음 명령의 경우 입력에 몇 개의 단어가 주어졌는지 어떻게 알 수 있나요?

$ 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.

관련 정보