Bash

一次追加一個文件,輸出到螢幕並從stderr重定向,沒有tee

  • October 15, 2014

time dd在 shell 腳本中執行一個命令,我想將結果輸出到一個文件中,並在螢幕上列印出來。我目前正在執行的線路是:

(time dd of=$dest_filepath if=$src_filepath bs=$block_size count=$block_count) >> $log_file 2>&1 &

雖然這給我留下了一個空文件並且沒有輸出到螢幕。為了完成這三件事,我需要做什麼?

請注意,我在帶有 Busybox 安裝的嵌入式系統中執行它,該安裝**不包含tee**因此這不是此問題的重複。

您所顯示的內容在我的系統上按預期工作。你確定你正在使用bash而不是sh?無論如何,我嘗試了’sdashbusybox’ssh並且它也在那里工作。在沒有 的情況下tee,我認為唯一的解決方案是cat $logfile在命令完成後。

另一種可能性是建立一個busybox被呼叫的連結tee並嘗試執行它。我的busyboxDebian 附帶的支持,但我不知道你是否會:

ln -s /bin/busybox /bin/tee

然後,嘗試tee正常執行。

如果你真的不能得到tee,你唯一的其他選擇是這樣的:

foo=$( ( time dd if="file1" of="file2" bs=12 count=5 ) 2>&1 &)
echo "$foo"
echo "$foo" >> logfile

引用自:https://unix.stackexchange.com/questions/162230