문자를 계산하는 쉘 스크립트에 문제가 있음


11

기본 사항을 배우려고하는데 스크립트에서 사용자 입력 문자를 계산하는 데 문제가 있습니다. 여기 내 스크립트가 있습니다. 누군가가 잘못 가고 있는지 지적 할 수 있습니까?

#!/bin/bash

echo "Enter a word!"    
read INPUT_STRING   
len= echo $INPUT_STRING | wc -c 
echo "Your character length is " $len
exit

답변:


12

모든 시작은 어렵다 :

#!/bin/bash
read INPUT
echo $INPUT
len=$(echo -n "$INPUT" | LC_ALL=C.UTF-8 wc -m)
echo $len

특히, 주변에 공간이 없어야 =하며 별도의 명령을 안에 포함시켜야 $(...)합니다. 또한 "이 구문을 사용 하여 변수를 따옴표로 묶고 싶을 수 있습니다. 그러면 "${INPUT}"실수로 변수가 다음 문자와 연결되지 않고 특수 문자 (예 : 개행 문자 \n) 가 포함될 수 있습니다 .


1
내 코드가 작동 해 주셔서 감사합니다. 추가 도움이 나중에 도움이 될 것입니다. 감사합니다
Jack Slater

@Gnouc이 통찰력있는 편집에 감사드립니다! 아직도 배우기
Sebastian

나중에 참조해서 죄송합니다. 그 목적을 알고 싶습니다. 감사합니다
Jack Slater

1
명령 줄 스위치의 의미를 찾으려면 사용하려고 man명령을 (이 경우 man echo: -n do not output trailing newline). 자주 호출 man하면 Linux 기술이 빠르게 향상됩니다. 에 대한 자세한 내용 LC_ALL은이 질문 / 답변을
Sebastian

1
링크에서 복사 : 일반적으로 LC_ALL=C사용자의 설정이 스크립트를 방해하지 않도록 명령을 실행합니다 . 예를 들어 [a-z]26 개의 ASCII 문자를 a에서 z로 일치 시키 려면 다음을 설정해야합니다.LC_ALL=C
Sebastian

8

나는 바람직하게 사용하는 것 같아

len=${#INPUT_STRING}

그렇지 않으면 echo에 의해 추가 된 줄 끝 문자도 계산됩니다. 그것이 당신이 원하는 것이 아니라면.


더 짧고 빠릅니다.
Franki
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.