如何在shell脚本中进行变量重定向?

时间:2012-10-03 03:31:15

标签: shell ash

如果我有一个带有命令的脚本

echo xx 2>&1 >junk

我得到一个带有“xx”的文件。如果我有一个带

的脚本
R="2>&1 >junk"
echo xx $R

脚本打印"xx 2>&1 >junk",而不是创建我想要的文件 我怎样才能有一个可变的重定向? 在手头的情况下,我要么想要重定向,要么只是 将变量设置为空字符串不进行重定向。但是我需要为许多命令做这件事,所以我想把它作为一个变量来做 注意:环境是嵌入式Linux,带有来自busybox的ash shell。

1 个答案:

答案 0 :(得分:1)

使用eval:

R="2>&1 >junk"
eval echo xx $R

顺便说一句,如果您希望将命令的stderr重定向到该文件,则必须重新排序重定向。 cmd 2>&1 > file会将stderr打印到原始标准输出,但是cmd > file 2>&1会将stderr和stdout指向指定的文件。