2012-02-21 2 views
0

가능한 중복 : 예를 들어
converting string to lower case in bash shell scripting어떻게 Bash에서 대문자를 소문자로 바꾸거나 다른 방법으로 변환 할 수 있습니까?

: 나는 중국어 C와 C를 인식 할 수 있도록하려면 간단한 방법으로

echo *****Language translator***** 
echo please choose the language 
for Chinese enter c 
for French enter f 

; 및 f 및 F와 동일한 것으로, 프랑스어로 인식됩니다.

모든 것을 소문자로 변환 할 수있는 방법이 있습니까?

여기 코드 부분 :

if [$ language == c];

echo $language | tr '[A-Z]' '[a-z]' 
+1

이 질문에 실제로 당신의 요구에 맞게 수 많은 사례가 있습니다. http://stackoverflow.com/questions/2264428/converting-string-to-lower-case-in-bash-shell-scripting –

+1

전체적으로 이렇게하는 것이 더 좋은 방법 일 것입니다. 선택을 어떻게 감지하나요? –

+0

예제를 사용하여 예제를 제공해주십시오. 감사합니다. – cacosud

답변

5

당신은 대문자/소문자로 문자를 전환 할 tr을 사용할 수 있습니다 word_to_translate
읽기 :

"는 번역하는 단어를 입력"에코 (man bash) :

${parameter^}  # Convert the first character in ${parameter} to uppercase 
${parameter^^}  # Convert all characters in ${parameter} to uppercase 
${parameter,}  # Convert the first character in ${parameter} to lowercase 
${parameter,,}  # Convert all characters in ${parameter} to lowercase 

그래서 코드는 다음과 유사 할 수 있습니다. [: 상단 :] TR의

# Read one character into $lang, with a nice prompt. 
read -n 1 -p "Please enter c for Chinese, or f for French: " lang 
if [ "${lang,,}" == "c" ]; then 
    echo "Chinese" 
elif [ "${lang,,}" == "f" ]; then 
    echo "French" 
else 
    echo "I don't speak that language." 
fi 
+0

중국어 또는 프랑스어의 철자가 잘못되었을 때 어떻게해야합니까? – cacosud

3

당신은 다음과 같은 경우-수정을 사용할 수 있습니다

+0

미안하지만 -n 1 -p는 무엇을 의미합니까? – cacosud

+1

@cacosud :'-n 1'은 사용자가 return 키를 누를 때까지 기다리지 않고 문자 하나를 읽는 것을 의미하며,'-p '는 다음을 프롬프트로 사용한다는 것을 의미합니다 ('echo'보다는 다소 깔끔한 방법). –

+0

불분명 하다니 죄송합니다. 설명에 감사드립니다, @ GordonDavisson. 도움이 될만한 의견을 추가했습니다. –

1

현대 버전은 POSIX 문자 클래스에 대한 지원을하고 [: 낮은 :]

tr -s '[:upper:]' '[:lower:]' <inputfile> outputfile 

문자 클래스의 모든 위치 :

http://ss64.com/bash/tr.html 
2

다른 방법이 있지만 대소 문자를 사용하는 것이 좋습니다.

read language 
case "$language" in 
([cC]) echo 'Chinese';; 
([fF]) echo 'French';; 
(*) echo 'Unrecognized language abbreviation';; 
esac 
당신이 스위치 이외의 값을 필요로하는 경우

당신은 case에서 정규 할당을 만들 수 :

read language 
case "$language" in 
([cC]) lingua='zh_tw'; echo 'Chinese';; 
([fF]) lingua='fr_fr'; echo 'French';; 
(*) echo 'Unrecognized language abbreviation';; 
esac 
+0

나는 항상 'c | C'로 쓰여진 사례를 보았습니다. echo 'Chinese';;'매일 새로운 것을 배우십시오! –

+1

@AdamLiss : 그것도 작동합니다.'진짜'Bourne 쉘은 표현 앞의 열린 괄호를 좋아하지 않습니다. POSIX 쉘 (그러므로'bash'와'ksh')은 선행 괄호를 허용하지만 필요하지는 않습니다. 왜냐하면'vim'에서 '괄호'와 쉽게 매치시키기 때문입니다. 대괄호는 물론 덩어리 덩어리의 일부입니다. –

+0

if 문에서 이것을 어떻게 사용할 수 있습니까? 예 : – cacosud

관련 문제