스크립트 A는 스크립트 B를 호출하고 스크립트 B에는 매개변수가 있습니다.

스크립트 A는 스크립트 B를 호출하고 스크립트 B에는 매개변수가 있습니다.

BASH를 사용하여 script_a.sh어떤 전화를 script_B.sh걸고 script_b.sh parms를 가지고 있습니다.

내가 찾은이번 OP작동하지만 결과가 예상한 것과 다릅니다.

$cat script_a.sh 
#!/bin/bash
SCRIPT_PATH="./script_b.sh"
("$SCRIPT_PATH")
exit 0

$ cat script_b.sh 
#!/bin/bash
LICENSE_BEGIN=`date --date="$1 day ago" +%y%m%d`
LICENSE_EXPIR=`date --date="$2 day ago" +%y%m%d`

echo "BEGIN  DATE $LICENSE_BEGIN"
echo "EXIPRE DATE $LICENSE_EXPIR"

exit 0

스크립트 결과

./script_b.sh  90 3
BEGIN  DATE 181209
EXIPRE DATE 190306

./script_a.sh 90 3
BEGIN  DATE 190308
EXIPRE DATE 190308

script_a pars를 수락하고 와 동일한 결과를 반환하려면 어떻게 해야 합니까 script_b?

답변1

위치 매개변수 목록을 다음과 같이 전달할 수 있습니다 "$@".

#!/bin/bash
SCRIPT_PATH="./script_b.sh"
"$SCRIPT_PATH" "$@"

(통화 주변에서 추가 하위 쉘을 제거했습니다)

다음 SPECIAL PARAMETERS섹션 에서 man bash:

   @      Expands to the positional parameters, starting from  one.   When
          the  expansion  occurs  within  double  quotes,  each  parameter
          expands to a separate word.  That is, "$@" is equivalent to "$1"
          "$2"  ...

관련 정보