Bash 기술: $로 변수 값 을 가 져 오 려 면 따옴표 나 괄호 를 추가 해 야 하 는 지 자세히 설명 합 니 다.
$
변수 값 을 가 져 올 때 따옴표 를 추가 할 지, 괄호 를 늘 릴 지 여 부 를 소개 한다.$로 변수 값 을 가 져 올 때 따옴표 를 추가 할 지 여부 입 니 다.
bash 셸 스 크 립 트 에서
$
로 변수 값 을 가 져 올 때, 예 를 들 어 $arg
더 블 인덱스 를 추가 하지 않 는 경우 가 있 습 니 다.예 를 들 어 "$arg"
.다음은 이 두 가지 형식 간 의 차 이 를 구체 적 으로 설명 한다. 어떤 상황 에서 더 블 따옴표 를 넣 어야 하 는 지, 어떤 상황 에서 더 블 따옴표 를 넣 지 않 아 도 되 는 지 를 설명 한다.bash 에 서 는 매개 변수 간 에 기본적으로 격 리 됩 니 다.매개 변수 값 자체 에 빈 칸 이 있 을 때 따옴표 를 추가 하지 않 고 매개 변수 값 을 묶 지 않 으 면 이 매개 변수 값 은 여러 매개 변수 값 으로 확장 되 어 원래 의 전체 값 을 잃 을 수 있 습 니 다.구체 적 인 예 는 다음 과 같다.
$ function test_args() { echo \$\#: $#; echo first: $1; echo second: $2; }
$ args="This is a Test"
$ test_args $args
$#: 4
first: This
second: is
$ test_args "$args"
$#: 1
first: This is a Test
second:
여기 testargs 함수, 입력 된
$1
, $2
매개 변수 값 을 인쇄 합 니 다.주어진 args 변수 가 지정 한 문자열 에는 빈 칸 이 있 습 니 다.실행
test_args $args
할 때 args 변수의 값 은 빈 칸 으로 네 개의 매개 변수 로 분리 되 어 있 음 을 볼 수 있 습 니 다.실행 test_args "$args"
시 args 변수의 값 은 변 하지 않 고 매개 변수 로 여 겨 집 니 다.두 따옴표 로 문자열 을 묶 으 면 빈 칸 으로 단 어 를 나 누 는 것 을 피 할 수 있 습 니 다.즉, 변수 자체 의 값 을 완전 하 게 유지 해 야 하고 빈 칸 에 여러 개의 매개 변수 로 확장 되 지 않 으 려 면 작은 따옴표 로 묶 어야 합 니 다.
스 크 립 트 나 함수 에 파 라 메 터 를 전달 할 때 가 져 온 매개 변수 값 이 빈 칸 이 있 는 지 확인 하지 못 할 수 있 습 니 다.빈 칸 이 있어 서 예상 치 못 한 단 어 를 나 누 어 매개 변수 개수 에 변 화 를 일 으 키 지 않도록 매개 변 수 는 작은 따옴표 로 묶 는 것 을 권장 합 니 다.
$로 변수 값 을 가 져 오 려 면 괄호 를 늘 려 야 합 니까?
bash 셸 스 크 립 트 에서
$
로 변수 값 을 가 져 올 때 괄호 를 추가 하지 않 는 경우 가 있 습 니 다. 예 를 들 어 $var
.예 를 들 어 ${var}
괄호 를 늘 리 는 경우 도 있다.다음은 이 두 가지 형식 간 의 차 이 를 구체 적 으로 설명 한다. 어떤 상황 에서 괄호 를 늘 려 야 하 는 지, 어떤 상황 에서 괄호 를 늘 리 지 않 아 도 되 는 지 를 설명 한다.man bash 에서
${parameter}
표현 식 에 대한 의 미 를 보면 다음 과 같다.${parameter}
The value of parameter is substituted.
The braces are required when parameter is a positional parameter with more than one digit, or when parameter is followed by a character which is not to be interpreted as part of its name.
The parameter is a shell parameter or an array reference (Arrays).
즉, 대괄호
{}
의 역할 은 대괄호 안의 문자열 을 하나의 전체 로 한정 하고 인접 한 문자 와 다른 의 미 를 조합 하지 않 는 다 는 것 이다.예 를 들 어 var 변수 값 은 "Say"입 니 다. 이 변 수 를 인쇄 하고 "Hello"문자열 을 따라 인쇄 하려 고 합 니 다. 즉, "Say Hello"문자열 을 인쇄 하 는 것 입 니 다.그러면 var 변수 값 을 가 져 오 는 구문 과 "Hello"문자열 사이 에 빈 칸 이 있 으 면 안 됩 니 다. 그렇지 않 으 면 echo 명령 은 이 빈 칸 을 함께 인쇄 합 니 다.그러나 원 하 는 효과 에 이 르 지 못 한다 고 썼 다.구체 적 인 예 는 다음 과 같다.
$ var="Say"
$ echo $var Hello
Say Hello
$ echo $varHello
$ echo ${var}Hello
SayHello
$ echo "$var"Hello
SayHello
$varHello
이런 표기 법 이 인쇄 된 'Say' 와 'Hello' 사이 에 원 하 는 결과 가 아 닌 빈 칸 이 있 는 것 을 볼 수 있다.$var Hello
인쇄 가 비어 있 습 니 다. 이것 은 바로 varHello 변 수 를 가 져 오 는 값 입 니 다. 이 변 수 는 정의 되 지 않 았 고 기본 값 은 비어 있 습 니 다.$varHello
원 하 는 결 과 를 출력 했 습 니 다. ${var}Hello
var 로 묶 어서 가 져 올 변수 이름 을 var 로 명확 하 게 지정 하여 헷 갈 리 지 않도록 합 니 다.{}
따옴표 로 "$var"Hello
를 묶 으 면 뒤의 'Hello' 문자열 과 구분 할 수 있 습 니 다.즉,
$var
로 변수 값 을 가 져 올 때 변수 이름 뒤에 공백 문 자 를 따라 다른 내용 을 분리 하면 큰 괄호 로 변수 이름 을 묶 지 않 아 도 된다.변수 이름 뒤에 변수 이름 자체 에 속 하지 않 는 다른 문 자 를 직접 따 르 려 면 이 변수의 이름 을 명확 하 게 하기 위해 큰 괄호 로 묶 어야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.