“与 shell 函数相关的任何重定向都会在执行该函数时执行。”

“与 shell 函数相关的任何重定向都会在执行该函数时执行。”

来自 bash 手册

任何与 shell 函数有关的重定向 (参见第 3.6 节 [重定向],第 31 页) 都会在执行该函数时进行。

“与 shell 函数关联的重定向”在哪里指定?它是为函数定义内的命令指定的,还是为函数调用指定的?

为什么引用中强调函数执行时会进行这样的重定向?

谢谢。

答案1

简而言之,正如 PSkocik 在评论中建议的那样,所讨论的语句意味着bar() { ... } > foo您不必担心foo在函数bar()开始执行之前被覆盖。也就是说,仅运行定义的脚本bar不足以覆盖foo,您实际上必须调用bar:)

实际上,这也意味着您可以使用变量进行重定向,> "$foo"而不是> foo因为变量在函数调用之前不会被扩展/评估。

关于这个和其他函数重定向细节的很多讨论可以在这里找到:http://www.linuxjournal.com/content/more-bash-redirections

相关内容