2009-08-25 88 views
1

我有一個UNIX命令序列的特定數量的雲一樣的東西:運行UNIX shell命令,如果輸出不具有行

command1 | command2 | command3 | wc -l 

現在,我有行數,我如果行數不等於特定的數字,那麼我想做一些事情(運行沒有輸入的特定命令)。我的shell腳本非常生疏(可能10年或更長時間,因爲我做了很多Unix工作),所以我不知道如何將這種條件添加到命令序列中。有人知道嗎?

回答

2

還挺難看..但是這個工作。

# test $(seq 10 | wc -l) -eq 10 && echo "there's 10" 
there's 10 
# test $(seq 11 | wc -l) -eq 10 && echo "there's 10" 

什麼的echo版在第二種情況下

+0

。 – quillbreaker 2009-08-25 15:05:05

+0

似乎我需要反引號而不是$()語法爲csh,但否則這很好。謝謝。 – quillbreaker 2009-08-25 16:32:27

+1

你給他們命名? ..我對'a.out'感到滿意:p – eduffy 2009-08-25 20:43:12

3
numberOfLines=$(command1 | command2 | command3 | wc -l) 
if [ "${numberOfLines}" == "7" ]; then 
    echo "Hooray." 
fi 
5

你需要捕捉到你的wc命令的輸出,並使用if運行另一個命令,如果它不等於你想要線,如人數:

count=$(command1 | command2 | command3 | wc -l) 
if [[ $count -ne 19 ]] ; then 
    command4 
fi 
+0

+1讓我想起了我的大學時代,當我們的UNIX編程教練勸我們不要說出我們編譯的程序「測試」的數值比較 – 2009-08-25 15:07:59