다음 bash 두 개의 스크립트가 있습니다.
금연 건강 증진 협회:
#!/bin/bash
./b.sh 'My Argument'
b.sh :
#!/bin/bash
someApp $*
someApp 바이너리는 $*
1 대신 2 개의 인수 ( ‘My’및 ‘Argument’)를받습니다.
몇 가지를 테스트했습니다.
b.sh
예상대로 작동을 통해서만 someApp 실행b.sh
예상대로 작동 하는 인수 반복 + 에코$@
대신 사용$*
하면 차이가 없습니다.
답변
$*
, 인용되지 않음, 두 단어로 확장됩니다. someApp
단일 인수 를 받도록 인용해야합니다 .
someApp "$*"
$@
대신 사용할 수 있으므로 someApp
다음 b.sh
과 같이 호출하면 두 개의 인수가 수신 됩니다.
b.sh 'My first' 'My second'
로 someApp "$*"
, someApp
하나의 인자를받을 것이다 My first My second
. 으로는 someApp "$@"
, someApp
두 개의 인수를받을 것 My first
하고 My second
.