echo는 $100를 어떻게 구문 분석하나요?

echo는 $100를 어떻게 구문 분석하나요?

나는 echo명령을 배우고 있습니다 :

$ echo $100
00
$ echo $1

$

그렇다면 왜 정의되지 않은 변수로 echo해석 되고 전체 대신 후행 0이 인쇄됩니까? 우분투 14.04를 사용하고 있습니다.$1$100

답변1

이것위치 매개변수, $1, $2, ..., $9, 에는 현재 쉘 또는 쉘 함수에 전달된 명령줄 인수가 포함되어 있습니다. 문자열은 뒤에 0이 두 개 $100오는 것으로 해석됩니다 . 이는 설정되지 않았거나 비어 있는 경우 발생합니다 .$100$1

스크립트에서 처음 세 개의 위치 매개변수를 명시적으로 설정하고 테스트합니다.

set -- a b c

echo "$100 $200 $300"

결과는 다음과 같습니다.

a00 b00 c00

9보다 큰 위치 인수는 예를 사용하여 액세스해야 하므로 뒤에 오는 내용과 "위치 인수 10 또는 100" (괄호가 없기 때문에) ${10}사이에는 모호성이 없습니다 .$100

리터럴 문자열을 인쇄하려면 셸에서 이스케이프하거나 작은따옴표를 사용해야 $100합니다 .$

echo \$100
echo '$100'

관련 정보