来自 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