簡體   English   中英

重定向bas​​h輸出

[英]Redirecting bash output

我正在運行的腳本有點麻煩。 腳本成功后,我無法重定向輸出。 我只需要將它傳遞給/ dev / null即可,因為我真的不在乎它。

if ! p4 -p 1667 -c prefetch -Zproxyload sync //bob/...; then
    printf "\nFailed to Sync //bob \n\n" &> $OUTPUT_LOG
else &>/dev/null
fi

我究竟做錯了什么?

您必須先確定要對輸出執行什么操作,然后再生成命令-運行命令。 如果要在出現問題時將保留的輸出保存到日志文件中,而在沒有問題時將其丟棄,則需要保存輸出,確定是否有問題,然后進行處理。

保存輸出(標准輸出和標准錯誤)意味着將其放入文件或變量中。 在這里,一個變量可能是合適的。

output=$(p4 -p 1667 -c prefetch -Zproxyload sync //bob/...  2>&1)
if [ $? != 0 ]
then
    {
    echo "$output"
    printf "\nFailed to Sync //bob\n\n"
    } > $OUTPUT_LOG
fi

如果輸出可能非常豐富,則使用文件的替代方法可能會更好,但要確保正確命名文件(請參閱mktemp )要復雜得多,而要確保正確刪除文件也要復雜得多,即使腳本被中斷(請參閱trap )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM