コマンドを呼び出すと、help declare
次のようになります。
-t NAME : to make NAMEs have the `trace' attribute
このオプションの使用法を示す例はありますか?私はこれがset -o functrace
すべての機能ではなくパラメータにのみ適用されることを除いて、コマンドと同じことを行うと思います。
この質問の動機は、foo関数がトラップを継承したいということです。だから試してみましたが、declare -t foo
成功しませんでした。
もちろん、set -o functrace
すべての関数にトラップを継承させることもできますが、場合によっては、1つまたは2つの関数だけがトラップを継承したいと思います。
スクリプトは次のとおりです。
function foo {
var=1
var=2
var=3
}
declare -t foo
var=0
trap 'echo var is $var' DEBUG
foo
trap - DEBUG # turn off the DEBUG trap
以下はスクリプトの出力です。
var is 0
var is 3
私は次のようなものを得ることを期待しています:
var is 0
var is 1
var is 2
var is 3
答え1
declare -t foo
トレース属性の設定変える foo
(とにかく特殊効果はありません)。-f
以下を使用して関数で設定する必要があります。
declare -ft foo
を使用するようにスクリプトを変更したら、-f
次の出力を取得します(コメントの説明)。
var is 0 # foo called
var is 0 # before the first command in function is run
var is 0 # var=1
var is 1 # var=2
var is 2 # var=3
var is 3 # trap ...