나는 echo
명령을 배우고 있습니다 :
$ echo $100
00
$ echo $1
$
그렇다면 왜 정의되지 않은 변수로 echo
해석 되고 전체 대신 후행 0이 인쇄됩니까? 우분투 14.04를 사용하고 있습니다.$1
$100
답변1
이것위치 매개변수, $1
, $2
, ..., $9
, 에는 현재 쉘 또는 쉘 함수에 전달된 명령줄 인수가 포함되어 있습니다. 문자열은 뒤에 0이 두 개 $100
오는 것으로 해석됩니다 . 이는 설정되지 않았거나 비어 있는 경우 발생합니다 .$1
00
$1
스크립트에서 처음 세 개의 위치 매개변수를 명시적으로 설정하고 테스트합니다.
set -- a b c
echo "$100 $200 $300"
결과는 다음과 같습니다.
a00 b00 c00
9보다 큰 위치 인수는 예를 사용하여 액세스해야 하므로 뒤에 오는 내용과 "위치 인수 10 또는 100" (괄호가 없기 때문에) ${10}
사이에는 모호성이 없습니다 .$1
00
리터럴 문자열을 인쇄하려면 셸에서 이스케이프하거나 작은따옴표를 사용해야 $100
합니다 .$
echo \$100
echo '$100'