쉘에서 읽기 입력을 평가하면 항상 1이 반환됩니다.

쉘에서 읽기 입력을 평가하면 항상 1이 반환됩니다.

사용자의 입력 승인을 사용하고 있습니다 read. 평소대로 계산을 사용하여 wc -c변수에 저장해 보았지만 결과는 항상 1을 반환합니다.

아래는

#!/bin/bash 

echo -n "Enter your plaintext.> "
read text

count=$(echo $text | wc -w)
echo  $count

어쨌든 변수가 변수로 저장되지 않은 경우 직접 에코하는 것이 올바른 결과입니다.

#!/bin/bash 

echo -n "Enter your plaintext.> "
read text

echo $text | wc -w

답변1

코드가 작동합니다.

read text
count=$( echo "$text" | wc -w )

count텍스트를 입력하면 2 로 설정됩니다 hello world.

댓글에서 문자 계산에 대해 이야기하셨습니다.

count=$( echo "$text" | wc -c )

또는

count=${#text}

당신을 위해 그것을 할 것입니다. 그러나 이 wc솔루션은 마지막 개행 문자도 계산하여 매개변수 확장 방법보다 한 문자 큰 값을 제공합니다. 이 방법은 위에서 했던 것처럼 확장을 큰따옴표로 묶지 wc않는 한 문자열의 공백도 압축합니다 .$text

관련 정보