SO를 검색한 결과 다음 문자열을 대문자로 사용하는 것이 작동한다는 것을 알았습니다.
str="Some string"
echo ${str^^}
하지만 명령줄 인수에서 비슷한 작업을 시도했는데 다음 오류가 발생했습니다.
시험을 마친
#!/bin/bash
## Output
echo ${1^^} ## line 3: ${1^^}: bad substitution
echo {$1^^} ## No error, but output was still smaller case i.e. no effect
어떻게 할 수 있나요?
답변1
시도하는 구문은 str^^
Bash 4.0 이상에서 사용할 수 있습니다. 버전이 오래되었을 수도 있습니다(또는 명시적으로 스크립트를 실행했습니다 sh
).
이 시도:
str="Some string"
printf '%s\n' "$str" | awk '{ print toupper($0) }'
답변2
echo "lowercase" | tr a-z A-Z
산출:
LOWERCASE
답변3
그것이 당신이 사용하는 전부가 tr
아니라면 조심하십시오 . A-Z
다른 로케일에서는 실패하고 s 및 bash(v4+) '[:lower:]' '[:upper:]'
만 작동합니다.awk
toupper
$ str="abcåäö"
$ echo "$str" | tr '/a-z/' '/A-Z/'
ABCåäö
$ echo "$str" | LC_ALL=sv_SE tr '[:lower:]' '[:upper:]'
ABCåäö
$ echo "$str" | awk '{print toupper($0)}'
ABCÅÄÖ
$ echo ${str^^} # Bash 4.0 and later
ABCÅÄÖ
$ STR="ABCÅÄÖ"
$ echo ${STR,,}
abcåäö
답변4
문자열을 인용해 보세요.
echo "${str^^}"