默认情况下,如果我们运行
foo(){
echo "myfoo"
}
它将转到标准输出。我的问题是,对于 bash 脚本或函数,是否有一种编程方式来更改设备,以便命令不会自动写入标准输出?
也许是这样的:
foo(){
mkfifo bar
exec 1<>bar
echo "myfoo" # this gets written to the bar named pipe?
}
所以我们也许在其他地方“重新指向”标准输出?
答案1
这种技术可能会达到目的: 使用进程替换,仅发送 stderr 到进程
基本上,你打电话:
exec > $some_file
使用进程替换,您可以执行以下操作:
exec > >( while read line; do echo " stdout: $line"; done )
这意味着所有标准输出都将转到该文件而不是终端。