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