如果调用命令help declare
。您将看到以下信息:
-t NAME : to make NAMEs have the `trace' attribute
是否有任何示例演示此选项的使用。我认为这与命令的作用相同,set -o functrace
只是它仅适用于参数而不是所有函数。
这个问题的动机是我想要一个函数 foo 继承一个陷阱。所以我尝试declare -t foo
了,但没有奏效。
我当然可以set -o functrace
用来让所有函数都继承一个陷阱,但是在某些情况下,我只希望一个或两个函数继承一个陷阱。
这是脚本:
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
declare -t foo
在变量 上设置跟踪属性foo
(无论如何都没有特殊效果)。您需要使用-f
在功能上进行设置:将您的脚本修改为使用
-f
,我得到以下输出(注释中的解释):