명령줄 매개변수를 대문자로 사용하는 방법은 무엇입니까?

명령줄 매개변수를 대문자로 사용하는 방법은 무엇입니까?

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:]'만 작동합니다.awktoupper

$ 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^^}"

관련 정보