쉘 스크립트 코드에서는 아래와 같이 명령줄 매개변수가 변수에 할당됩니다. 문장에 있는 쉼표(,)는 무엇을 의미하나요? Bash 스크립트에서 명령줄 인수를 읽을 때 두 개의 쉼표를 추가하면 어떤 차이가 발생합니까?
#!/bin/bash
var1=${1,,}
var2=${2,,}
./script.sh value1 value2
답변1
그것은매개변수 확장라고케이스 수정(바라보다 man bash
).
$var1
첫 번째 인수는 소문자로 변환된 모든 문자와 함께 포함됩니다. Single은 ,
매개변수의 첫 번째 문자만 변경합니다.
다음과 같은 소문자 모음과 같이 쉼표 뒤의 각 문자에 대한 패턴을 지정할 수 있습니다.
x=$(echo {A..Z})
echo ${x,,[AEIOU]}
산출:
a B C D e F G H i J K L M N o P Q R S T u V W X Y Z
대칭적으로 대문자로 변환을 사용할 수 있습니다 ^
.
답변2
man bash | grep -B1 -A10 ,,
${parameter,pattern}
${parameter,,pattern}
Case modification. This expansion modifies the case of alpha‐
betic characters in parameter. The pattern is expanded to pro‐
duce a pattern just as in pathname expansion. Each character in
the expanded value of parameter is tested against pattern, and,
if it matches the pattern, its case is converted. The pattern
should not attempt to match more than one character. The ^
operator converts lowercase letters matching pattern to upper‐
case; the , operator converts matching uppercase letters to low‐
ercase. The ^^ and ,, expansions convert each matched character
in the expanded value; the ^ and , expansions match and convert
only the first character in the expanded value. If pattern is
omitted, it is treated like a ?, which matches every character.
If parameter is @ or *, the case modification operation is
applied to each positional parameter in turn, and the expansion
is the resultant list. If parameter is an array variable sub‐
scripted with @ or *, the case modification operation is applied
to each member of the array in turn, and the expansion is the
resultant list.