脚本 A 调用脚本 B,脚本 B 有参数

zun*_*arz 0 bash

使用 BASH,我有script_a.sh哪些调用script_B.shscript_b.sh 参数。

我发现这个 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
Run Code Online (Sandbox Code Playgroud)

脚本结果

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

./script_a.sh 90 3
BEGIN  DATE 190308
EXIPRE DATE 190308
Run Code Online (Sandbox Code Playgroud)

我怎样才能script_a 接受 parms 并返回与 相同的结果script_b

ste*_*ver 5

您可以将位置参数列表传递为"$@"

#!/bin/bash
SCRIPT_PATH="./script_b.sh"
"$SCRIPT_PATH" "$@"
Run Code Online (Sandbox Code Playgroud)

(我从调用周围删除了一个额外的子shell)

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"  ...
Run Code Online (Sandbox Code Playgroud)