0

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

echo xx 2>&1 >junk

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

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

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

4

1 回答 1

1

使用评估:

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

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

于 2012-10-03T03:32:47.430 回答