31

スクリプト「 a.sh set -x」で実行すると、別のスクリプト「b.sh」が呼び出されるとします。

-x「b.sh」に「a.sh」からオプションを継承させることはできますか?

4

4 に答える 4

36
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
于 2013-12-30T02:44:12.183 に答える
4

はサブシェルに継承されないため-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
于 2013-07-25T12:26:45.933 に答える
0

@devnull が言ったよう.に、スクリプトで操作を使用できます。

a.shで

. SETVALUES

b.shで

. SETVALUES

SETVALUES で

set -x

SETVALUES を呼び出すと、それらの値はそのサブシェルで設定されます。

于 2013-07-25T09:08:39.487 に答える