如果我有一个带有命令的脚本
echo xx 2>&1 >junk
我得到一个带有“xx”的文件。如果我有一个带
的脚本R="2>&1 >junk"
echo xx $R
脚本打印"xx 2>&1 >junk"
,而不是创建我想要的文件
我怎样才能有一个可变的重定向?
在手头的情况下,我要么想要重定向,要么只是
将变量设置为空字符串不进行重定向。但是我需要为许多命令做这件事,所以我想把它作为一个变量来做
注意:环境是嵌入式Linux,带有来自busybox的ash shell。
答案 0 :(得分:1)
使用eval:
R="2>&1 >junk"
eval echo xx $R
顺便说一句,如果您希望将命令的stderr重定向到该文件,则必须重新排序重定向。 cmd 2>&1 > file
会将stderr打印到原始标准输出,但是cmd > file 2>&1
会将stderr和stdout指向指定的文件。