我不明白声明命令中的 t 和 f 参数到底为什么以及如何使用它们。能给我一些简单的插图吗?
该trace属性使相关函数继承DEBUG和RETURN陷阱。-f只是意味着 的参数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
Run Code Online (Sandbox Code Playgroud)
当函数被赋予trace属性时,会发生以下情况。
$ declare -f -t f
DEBUG: declare -f -t f
$ f
DEBUG: f
DEBUG: f
DEBUG: echo a
a
DEBUG: echo b
b
Run Code Online (Sandbox Code Playgroud)
(我不知道为什么函数调用在陷阱中出现两次。)
| 归档时间: |
|
| 查看次数: |
903 次 |
| 最近记录: |