쉘 스크립트에서 $14를 사용하여 14번째 위치 인수에 어떻게 액세스합니까?

쉘 스크립트에서 $14를 사용하여 14번째 위치 인수에 어떻게 액세스합니까?

Unix의 위치 매개변수에 대해 읽고 있었는데 다음을 발견했습니다.

쉘에서는 명령줄에 최소 128개의 인수가 포함될 수 있지만 쉘 프로그램은 주어진 시간에 $1부터 $9까지 9개의 위치 인수를 참조하도록 제한됩니다. Shift 명령을 사용하여 이 제한 사항을 해결할 수 있습니다.

그래서 다음과 같은 간단한 쉘 스크립트를 만들었습니다 file.

#! /bin/bash
echo $14

그런 다음 다음과 같이 실행하십시오.

./file 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

나는 14개를 얻었다!

shift그렇다면 쉘이 명령을 사용하지 않고 10개 이상의 인수($0에서 $9까지)를 허용하지 않는 경우 이것이 어떻게 가능합니까?

답변1

당신이 달릴 때

echo $14

무슨 일이 일어나는지는 bash가 인수를 개별적으로 해석한다는 것 $14입니다 . 그런 다음 확장되고 (이 경우 "1"과 동일) 문자열이 추가되어 "14"가 됩니다. 이것이 예상한 것이지만 실제로는 Bash가 실제로 작동하는 방식의 부작용입니다. 댓글에 언급된 @steeldriver처럼 다음과 같이 스크립트를 실행하세요.$14$14

./file a b c d e f g h i j k l m n

그러면 호출은 echo $14"n"이 아닌 "a4"를 출력합니다.

변수는 큰따옴표로 묶여 있습니다.

echo "$14"

Bash에서는 변수가 여전히 올바르게 확장되지 않습니다. 표준 접근 방식은 변수 이름 주위에 중괄호를 사용하는 것입니다.

echo ${14}

자세한 내용은 공식 문서를 참조하세요.매개변수 확장배쉬에서. 또한 다음과 같은 더 멋진 일을 많이 할 수 있습니다.

${14^^*}

매개변수 번호 14를 대문자로 표기합니다. 읽어! :)

관련 정보