[bash] (bash) 스크립트 사이에 공백이있는 인수 전달

다음 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.


답변