在bash
,您捕獲一個命令的輸出與$()
(或反引號,但我更喜歡前者因爲你可以嵌套它們):
pax> xx=$(ls -1 | grep bac)
pax> echo "..${xx}.."
..backup0.sh
backup1.sh..
所以,在您的特定情況下,你會看這樣的:
timestamp=$(db2 backup db $SOURCE online compress include logs 2>&1
| tee /tmp/output
| grep 'image is'
| awk '{print $11}')
請記住我已經分裂跨多個線可讀性,但它應該去在一條線上。至於它是如何工作的:
2>&1
結合了標準輸出和錯誤。
tee
將確保您將整個輸出存儲在某處。
grep
會給你相關的行。
awk
只會打印出20100906142221
。
xx=$(...)
將採取並將其分配到xx
。
如果你的輸出與你所說的略有不同,你可能需要微調一些命令,但這應該是一個好的開始。
基於評論,這裏就是你需要先從:
#!/bin/bash
echo what's the source db name?
read SOURCE
echo what's the target db name?
read TARGET
db2 backup db $SOURCE online compress include logs 2>&1 | tee /tmp/db_bkp_$$
DB2TIME=$(cat /tmp/db_bkp_$$ | grep 'image is' | awk '{print $11}')
rm -rf /tmp/db_bkp_$$
db2 restore database $SOURCE taken at $DB2TIME into $TARGET
這將執行DB2命令發送輸出和錯誤,以這兩個終端和臨時文件($$
給你當前進程ID以避免文件名衝突)。然後從臨時文件中提取日期/時間,然後刪除該文件。
然後你使用日期/時間。
您已經發布了兩個followups爲*答案*。他們應該作爲編輯發佈到您的原始問題。如果您希望特定用戶看到您的後續行動,則應通過將其附加到他們留下的答案或在評論中使用@username來解決對他們的評論。你可以說類似'@dennis:請參閱我編輯的問題以獲取更多信息。請記住,在這些網站上,答案旨在成爲問題的答案,而不是其他答案或評論的答案。 – 2010-09-06 06:57:45
@dennis thanks dennis,問題是當我回答一個答案時,我放棄了所有的編輯選項,所以如果我想把代碼和突出顯示格式看起來很糟糕 - 有沒有一種方法可以在回覆評論中進行格式化? – edumike 2010-09-06 07:25:16
無論如何只是發表評論。如果你沒有足夠的代表來自己編輯你的問題,你會得到一些有幫助的人將你的問題納入其中。 – paxdiablo 2010-09-06 08:20:06