使用 BASH,我有script_a.sh哪些调用script_B.sh和script_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?
您可以将位置参数列表传递为"$@":
#!/bin/bash
SCRIPT_PATH="./script_b.sh"
"$SCRIPT_PATH" "$@"
Run Code Online (Sandbox Code Playgroud)
(我从调用周围删除了一个额外的子shell)
从SPECIAL PARAMETERS部分man bash:
Run Code Online (Sandbox Code Playgroud)@ 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" ...