testter Asked: 2019-07-30 09:36:37 +0800 CST2019-07-30 09:36:37 +0800 CST 2019-07-30 09:36:37 +0800 CST 声明命令中 t 和 f 参数的 Bash shell 示例 772 我不明白 declare 命令上的 t 和 f 参数究竟为什么以及如何使用它们。请给我一些简单的插图好吗? shell-script 1 个回答 Voted Best Answer ilkkachu 2019-07-30T09:48:23+08:002019-07-30T09:48:23+08:00 该trace属性使有问题的函数继承DEBUG和RETURN陷阱。-f只是意味着 to 的参数declare是一个函数,而不是一个变量。 Bash 的手册是这样描述函数的: shell 执行环境的所有其他方面在函数及其调用者之间都是相同的,但有以下例外:除非函数已被赋予跟踪属性,否则不会继承 DEBUG 和 RETURN 陷阱 和描述declare: -t 为每个名称赋予跟踪属性。跟踪函数从调用 shell 继承 DEBUG 和 RETURN 陷阱。trace 属性对变量没有特殊意义。 以下是没有该trace属性的函数会发生什么: $ f() { echo a; echo b; } $ trap 'echo DEBUG: $BASH_COMMAND' DEBUG $ f DEBUG: f a b trace这是给函数赋予属性时发生的情况。 $ declare -f -t f DEBUG: declare -f -t f $ f DEBUG: f DEBUG: f DEBUG: echo a a DEBUG: echo b b (我不知道为什么函数调用在陷阱中出现两次。)
该
trace
属性使有问题的函数继承DEBUG
和RETURN
陷阱。-f
只是意味着 to 的参数declare
是一个函数,而不是一个变量。Bash 的手册是这样描述函数的:
和描述
declare
:以下是没有该
trace
属性的函数会发生什么:trace
这是给函数赋予属性时发生的情况。(我不知道为什么函数调用在陷阱中出现两次。)