我有一个 bash 应用程序正在产生一些结果,我想将结果回显stdout到用户选择的文件中。因为我还向屏幕回显了其他交互式消息,所以要求用户>在他想将结果回显到文件时明确使用重定向不是一个选项 (*),因为这些消息也会出现在文件中。
现在我有一个解决方案,但它很难看。
if [ -z $outfile ]
then
echo "$outbuf" # Write output buffer to the screen (stdout)
else
echo "$outbuf" > $outfile # Write output buffer to file
fi
Run Code Online (Sandbox Code Playgroud)
我试图让变量$outfile等于stdout, to&1或者其他东西,但它只会写入具有该名称的文件,而不是实际写入标准输出。有没有更优雅的解决方案?
(*) 我可以作弊并stderr为此目的使用,但我认为它也很丑陋,不是吗?