不带参数的 exec 有什么作用?

不带参数的 exec 有什么作用?

exec没有参数返回成功并且显然什么也不做。为什么?

答案1

道路Bash 的手册是这么说的,语法exec

exec [-cl] [-a name] [command [arguments]]

如果命令提供后,它会替换 shell,而不创建新进程。

但,

如果不命令指定后,重定向可用于影响当前 shell 环境。

因此,exec如果命令行上没有任何其他内容,则没有要运行的命令,也没有要应用的重定向,因此无需执行任何操作。

但是 egexec >> output.txt也没有实际的参数exec,但是它仍然将重定向应用于 shell。

这与 Zsh 和 POSIX 功能类似,尽管 POSIX 文本有点难以阅读。

答案2

将这些行放在 shell 顶部附近将捕获脚本中未进一步重定向的输出。

LOG=bash.out.txt
exec >"$LOG" 2>&1

echo "captured into $LOG"
echo "not captured into $LOG" > otherfile.txt

相关内容