スクリプト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"  ...

おすすめ記事