スクリプト「 a.sh set -x
」で実行すると、別のスクリプト「b.sh」が呼び出されるとします。
-x
「b.sh」に「a.sh」からオプションを継承させることはできますか?
export SHELLOPTS
例えば:
echo date > b
chmod +x b
エクスポートがないと、次のコマンドが./a
呼び出されたときにのみコマンドが表示されます./b
。
$ echo ./b > a
$ bash -xv a
./a
+ ./b
Sun Dec 29 21:34:14 EST 2013
ただし、SHELLOPTS をエクスポートすると、コマンドが./a
および./b
$ echo "export SHELLOPTS; ./b" > a
$ bash -xv a
./a
+ ./b date
++ date
Sun Dec 29 21:34:36 EST 2013
はサブシェルに継承されないため-x
、もう少し明示的にする必要があります。が特別なパラメータ-x
とともに使用された場合にテストできます。$-
if [[ $- = *x* ]]; then
# Set the option, then *source* the script, in a subshell
( set -x; . b.sh )
else
# Simply run the script; subshell automatically created.
./b.sh
fi
@devnull が言ったよう.
に、スクリプトで操作を使用できます。
a.shで
. SETVALUES
b.shで
. SETVALUES
SETVALUES で
set -x
SETVALUES を呼び出すと、それらの値はそのサブシェルで設定されます。