2012-09-13 2 views
7

$*은 쉘 스크립트에서 정확히 무엇을 의미합니까?

예를 들어 다음 코드 조각을 고려

$JAVA_HOME/bin/java/com/test/Testclass $* 
+1

HTTP를 쉘 스크립트에 전달 된 인수의 수 : // tldp .org/LDP/abs/html/internalvariables.html # ARGLIST – alfasin

+0

명령 행의 모든 ​​위치 매개 변수가 script : http://tldp.org/LDP/abs/html/internalvariables.html#APPREF – GreenMatt

+0

POSIX를 기반으로 한 문서는 bash 이외의 다른 사람들에게도 적용되므로 특히 유용합니다. http://pubs.opengroup.org/ onlinepubs/9699919799/utilities/V3_chap02.html # tag_18_05_02 –

답변

7

모든 인수는 스크립트 또는 함수로 전달되며 단어 단위로 구분됩니다.

일반적으로 잘못된 것이므로 인수를 올바르게 구분하는 "[email protected]"으로 대체해야합니다.

+3

글쎄, 이미 $ *가 처음으로 하나의 문자열로 구성되는 방법을 설명했다. 여기서 중요한 것은 쉼표가 인용되지 않는 한 셸의 정상적인 단어 분할을 받게된다는 것입니다. "$ *"인수가 여전히 하나의 긴 문자열로 처리되는지 확인합니다. "$ @"는 인수 목록을 따옴표로 묶인 문자열의 배열로 강제 처리합니다. 각각은 그것의 사용법을 가지고 있으며 차이점을 아는 것이 중요합니다. –

6

그것은 스스로 답을 쉽게 찾을 수 있습니다 : man bash/\$\* :

특수 파라미터

쉘 취급 여러 매개 변수를 특별히 . 이러한 매개 변수는 참조 할 수만 있습니다. 그들에게 할당하는 것은 허용되지 않습니다.

  • 하나부터 시작하여 위치 매개 변수로 확장됩니다. 이중 따옴표 내에서 확장이 발생하면 각 매개 변수의 값이 IFS 특수 변수의 첫 번째 문자로 구분 된 단일 단어로 확장됩니다. 즉, "$*""$1c$2c..."과 같습니다. 여기서 cIFS 변수의 첫 번째 문자입니다. IFS이 설정되어 있지 않으면 매개 변수가 공백으로 구분됩니다. IFS이 null 인 경우 매개 변수는 중간에 구분 기호없이 결합됩니다.
1

$*은 해당 쉘 스크립트에 전달 된 모든 매개 변수로 확장됩니다.

$0 = 쉘 스크립트의 이름

$1 = 첫 번째 인수 = 두 번째 인수

$2 ... 등

$# =

관련 문제