簡體   English   中英

將sh腳本輸出重定向到兩個日志,一個帶有-x,一個沒有-x

[英]redirect sh script output to two logs, one with -x and one without

是否可以運行一次腳本並將其寫入兩個日志。 一個日志將被詳細描述,並具有-x選項的輸出。 其他日志將不作詳細說明,僅顯示常規輸出,而沒有-x選項?

set -x有一個很棒的東西,它的輸出實際上不是打印到stdout而是打印到stderr

因此,如果你有

myscript.bash 1> log 2> xlog

在腳本中使用set -x ,因此log包含常規輸出,而xlog則輸出調試命令+ <cmd>和錯誤。

如果您想要一個包含所有輸出的文件,而只包含常規輸出的文件,則可能會更加困難,我認為這需要在末尾編輯日志。 這是一個接受另一個腳本運行的包裝腳本:

#!/bin/bash

set -x
. $1 &> full.log
set +x
sed '/^+.*/d' full.log > out.log

你在哪里打電話

wrap.sh myscript.sh

這樣做的缺點是刪除以+開頭的任何行,這可能足夠,也可能不夠。 使用進程替換可能會有更好的解決方案,但我想不出一個可以保留stdoutstderr之間的順序的解決方案。

暫無
暫無

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

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