ibse Asked: 2022-01-18 08:40:12 +0800 CST2022-01-18 08:40:12 +0800 CST 2022-01-18 08:40:12 +0800 CST 从正在运行的脚本重定向标准输出 772 在 C 中,您可以在程序运行时将标准输出重定向到某个地方,例如: int fd = open("some_file", O_RDWR); dup2(fd, STDOUT_FILENO); printf("write to some_file\n"); 我可以在运行 bash 脚本 ( ./script.sh > some_file) 时在 bash 中实现此目的而不重定向标准输出吗? bash shell 1 个回答 Voted Best Answer Gilles 'SO- stop being evil' 2022-01-18T09:06:17+08:002022-01-18T09:06:17+08:00 您可以围绕任何命令使用重定向,包括复合命令。例如: some_function () { echo "This also $1 to the file" } { echo "This goes to the file" some_function "goes" } >some_file echo "This does not go to the file" some_function "does not go" exec您可以通过使用重定向调用内置函数来执行永久重定向(直到脚本结束或被另一个重定向覆盖),但没有命令。例如: foo () { echo "This does not go to the file" exec >some_file echo "This goes to the file" } foo echo "This still goes to the file" 这些功能在所有 Bourne/POSIX 样式的 shell 中都可用,包括 bash。
您可以围绕任何命令使用重定向,包括复合命令。例如:
exec
您可以通过使用重定向调用内置函数来执行永久重定向(直到脚本结束或被另一个重定向覆盖),但没有命令。例如:这些功能在所有 Bourne/POSIX 样式的 shell 中都可用,包括 bash。