Bash 스크립트 명령줄 매개변수는 대문자입니다.

Bash 스크립트 명령줄 매개변수는 대문자입니다.

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또한 유효합니다

관련 정보