Linux 標準輸出重定向 缺失的問題

2021-06-07 06:42:13 字數 824 閱讀 9171

初學linux shell. 想寫個指令碼a.sh 分析另外乙個指令碼b.sh中某程式的執行輸出結果.

./a.sh b.sh args

a.sh 如下:

#!/bin/sh

./$1 $2 > /tmp/log

#search keyword

grep -l "keyword"  /tmp/log

if [ $? -eq 0 ]

then

code=0

else

code=-1

fiexit

但是在/tmp/log 裡面總是只有部分輸出, 另外一部分由於沒有重定向成功而列印在了螢幕上.

解決方案:

修改第一行為

./$1 $2 > /tmp/log 2>&1

原因:程式中有標準輸出stdout也有錯誤輸出stderr. 之前的寫法只是重定向了stdout, 並未包含stderr.

cmd > file 把 stdout 重定向到 file 檔案中;

cmd >> file 把 stdout 重定向到 file 檔案中(追加);

cmd 1> fiel 把 stdout 重定向到 file 檔案中;

cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 檔案中;

cmd 2> file 把 stderr 重定向到 file 檔案中;

cmd 2>> file 把 stderr 重定向到 file 檔案中(追加);

cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 檔案中(追加);

重定向標準輸出

各位看官,今天我們來聊聊標準io流的重定向問題。必須,在程式設計時會輸出大量資訊到螢幕上,非常不方便閱讀,我們可以通過對於標準輸出的重定向,從而使得閱讀更方便。主要涉及的方法為 setin inputstream setout printstream seterr printstream setin...

重定向標準錯誤輸出

第5章介紹了標準輸出的概念,並解釋了如何重定向命令的標準輸出。除了標準輸出之外,命令還可以將輸出傳送到標準錯誤輸出。命令將錯誤訊息傳送到標準錯誤輸出,這樣就可以避免與傳送到標準輸出的資訊混淆在一起。與處理標準輸出一樣,預設情況下,shell將命令的標準錯誤輸出傳送到螢幕上。除非重定向標準輸出和標準錯...

重定向標準錯誤輸出

8.2.3 重定向標準錯誤輸出 第5章介紹了標準輸出的概念,並解釋了如何重定向命令的標準輸出。除了標準輸出之外,命令還可以將輸出傳送到標準錯誤輸出。命令將錯誤訊息傳送到標準錯誤輸出,這樣就可以避免與傳送到標準輸出的資訊混淆在一起。與處理標準輸出一樣,預設情況下,shell將命令的標準錯誤輸出傳送到螢...