将shell输出重定向到文件时使用&符号会在输出中返回一些额外命令

4

我有一个简单的shell脚本,其中包含以下echo语句。

-bash-3.2$ vi dummy.sh
echo "hi"

如果我直接执行该文件,它会将“hi”作为输出写入名为"text"的文件中。
-bash-3.2$ ksh dummy.sh > text
-bash-3.2$ cat text
hi
-bash-3.2$ 

现在,如果我在脚本末尾加上&后再执行相同的脚本,它将以以下方式写入hi输出和其他命令文本。
-bash-3.2$ ksh dummy.sh > text &
[1] 11208
-bash-3.2$ cat text
hi
[1]+  Done                    ksh dummy.sh > text
-bash-3.2$ 

我不想在名为text的输出文件中打印[1]+ Done ksh dummy.sh > text这一行,并使用&模式。请问有谁能告诉我如何实现这一点,因为我需要在后台模式下执行数百个脚本?
1个回答

4
以下这行并未追加到文件中。
[1]+  Done                    ksh dummy.sh > text

这是Shell打印的信息,它告诉你后台进程已经结束。

再次尝试cat text,然后你会注意到没有带有[1] ....的行。


1
或者在运行 cat 命令之前,只需按下 enter 键即可。或者使用 set -b 命令打开立即通知功能,在运行 cat 命令之前稍等片刻即可。 - Etan Reisner
@EtanReisner:我需要附加 set -b 吗? - logan
2
@logan,在运行后台作业之前运行set -b。Shell仍然会打印[1] ...,但它会在后台作业完成时立即打印。 - falsetru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接