변수로 전달하기 위해 arg를 대문자로 변환

변수로 전달하기 위해 arg를 대문자로 변환

명령줄 인수를 대문자로 변환하고 호출되는 스크립트의 변수로 전달하는 방법이 있습니까?

Eg. ./deploy_app.csh 1.2.3.4 middleware 

미들웨어를 MIDDLEWARE로 변환하고 변수 대체가 필요한 스크립트에서 변수로 전달해야 합니다.

echo와 awk를 사용하여 이 출력을 얻을 수 있다는 것을 알고 있지만 해당 조합을 사용하지 않고 방법이 있는지 확인하려고 합니다.

답변1

스크립트 내에서 bash(4.0+) 사용:

newvarname=${3^^}

tcsh를 사용하세요:

set newvarname = $3:u:q

zsh 사용:

# tcsh-like syntax:
newvarname=${3:u} # or just $3:u
# native syntax:
newvarname=${(U)3}

쉘 함수 대신 사용하십시오( 일부 구현(예: GNU)에서는 tr단일 바이트 문자로만 제한되지만 ).tr

newvarname=$(printf "%s" "$3" | tr '[:lower:]' '[:upper:]')

이 페이지에는 텍스트 조작을 포함하여 다양한 UNIX 셸의 다양한 기능이 요약되어 있습니다.http://hyperpolyglot.org/unix-shells.

답변2

Bash에서는 변수를 대문자로 선언하면 -u자동으로 변환됩니다.

$ declare -u a
$ b=abcd
$ a=$b
$ echo $a
ABCD

관련 정보