我遇到了一个我不知道原因的问题。我想最简单的解释方法是通过代码示例:
test ()
{
echo "This will be printed to the file"
#But the output of rsync will not
rsync -av /path/A /path/B
echo "This will be printed to the file"
}
function_calling_test ()
{
test | tee -a "file_B.txt"
}
function_calling_test | tee -a "file_A.txt"
在上面的示例中, file_A.txt 将包含 echo 输出和“test” rsync 输出/ strong>,但 file_B.txt 只会包含 echo 输出。这是为什么?
答案 0 :(得分:1)
您需要将stderr输出添加到流
mytest ()
{
echo "This will be printed to the file"
#But the output of rsync will not
rsync -av /path/A /path/B 2>&1
# -----------------------^^^^^^
echo "This will be printed to the file"
}
test
是一个可用于所有unix shell的命令,它是unix / Linux操作系统的一部分。不要将你的功能命名为普通测试,你要为自己做好准备! ; - )
我希望这会有所帮助。