2013-04-11 35 views
0

我是Unix Shell腳本編寫的相對新手。 如何運行(以下)多個UNIX命令(放入一個腳本,說「discover.sh」,使用my_log.txt輸入文件一次?最終,我想創建一個別名[別名discover1 ='〜/ discover .SH「在我的.bashrc我怎樣才能運行多個UNIX命令,使用輸入文件,只需要一次

我愛:

$ discover1 my_log.txt 

當前腳本:

/bin/egrep 'Version:|Online \(warning\)|Failed \(offline\)' my_log.txt; 
/bin/grep -A7 "syscontrol realmmgr" my_log.txt; 
/bin/grep -C2 BIOS my_log.txt; 
+0

爲什麼你要把它作爲別名,而不是在'$ HOME/bin'目錄中創建一個shell腳本,它應該在你的'$ PATH'上?可能有一些方法可以將文件捕獲一次,特別是在'bash'中。我不確定他們是否值得使用。例如:'cat my_log.txt | tee>(/ bin/egrep'Version ...')>(/ bin/grep -A7「...」)|/bin/grep -C BIOS'。這會失去對輸出排序的控制(您可以從不同的進程中獲取部分行)。如果你真的想掃描一次文件,我建議使用Perl一次完成搜索。不是很簡單,但很容易。 – 2013-04-11 05:46:37

回答

1

discover.sh應包含以下內容:

#!/bin/bash 
/bin/egrep 'Version:|Online \(warning\)|Failed \(offline\)' "$1" 
/bin/grep -A7 "syscontrol realmmgr" "$1"; 
/bin/grep -C2 BIOS "$1"; 

變量$1被自動設置爲腳本的第一個參數。

+0

任何不使用'「$ @」'代替'「$ 1」'的原因?如果您處理任何數量的文件(非零),則更一般。如果沒有爭論,這是不安全的;可以說,劇本應該檢查是否至少有一個「1美元」的工作。 – 2013-04-11 05:38:56

+0

這些都是合理的。 – Barmar 2013-04-11 05:47:50

相關問題