Bash 쉘에서 이 작업을 수행할 수 있는 경우:
$ STRING="A String"
$ echo ${STRING^^}
A STRING
명령줄 매개변수를 대문자로 변경하는 방법은 무엇입니까?
나는 시도했다:
GUARD=${1^^}
이 생산 라인은잘못된 교체이 줄에 오류가 있습니다.
답변1
이 테스트 스크립트부터 시작해 보겠습니다.
$ cat script.sh
GUARD=${1^^}
echo $GUARD
이것은 작동합니다:
$ bash script.sh abc
ABC
이것은 작동하지 않습니다:
$ sh script.sh abc
script.sh: 1: script.sh: Bad substitution
이는 내 시스템에서 대부분의 데비안 유사 시스템과 마찬가지로 기본 쉘이 다음과 /bin/sh
같기 때문입니다.아니요불다. Bash 기능을 얻으려면 bash를 명시적으로 호출해야 합니다.
데비안 계열 시스템의 기본 셸은 dash
기능이 아니라 속도를 위해 선택되었습니다. 지원되지 않습니다 ^^
. 무엇을 지원하는지 알아보려면 다음을 읽어보세요 man dash
.
답변2
사용 tr
명령:
스크립트:
#!/bin/bash
echo $@ | tr '[a-z]' '[A-Z]'
확인하다:
$ bash myscript.sh abc 123 abc
ABC 123 ABC
답변3
typeset -u VAR=VALUE
또한 유효합니다