2013-10-30 68 views
0

我在shell中運行以下命令:爲什麼>不輸出重定向到文本文件

sh myscript.sh > test.txt 

輸出顯示在外殼。我期待輸出將被放入test.txt

+1

如何你的腳本是? '>'會將stdout重定向到'test.txt',但stderr會出現在屏幕上。例如,如果你有'ls alsjdfasjdfakls'(一個不存在的文件),你將會在運行'sh myscript.sh> test.txt'時得到ls:不能訪問alsjdfasjdfakls:沒有這樣的文件或目錄'' – fedorqui

回答

1

打印輸出可能是標準錯誤輸出。

使用下面,你還可以重定向標準錯誤(文件描述符2):

sh myscript.sh > test.txt 2>&1 

在bash中,你還可以用以下幾種形式:

sh myscript.sh &> test.txt # This is preferred according to bash(1). 

sh myscript.sh >& test.txt 
3

不會顯示在輸出殼,而不是殼上顯示的STDERR

如果你想同時得到STDOUTSTDERR重定向到日誌文件,說:

sh myscript.sh > test.txt 2>&1 

既然你已經標記的問題,你還可以說:

bash myscript.sh >& test.txt