missing之bash腳本編寫-3 條件比較語句

條件比較語句

下面有個例子,將上面說的幾個點綜合了一下:

#!/bin/bash

echo "Starting program at $(date)" # Date will be substituted
echo "Running program $0 with $# arguments with pid $$"

for file in "$@"; do
    grep foobar "$file" > /dev/null 2> /dev/null
    # When pattern is not found, grep has exit status 1
    # We redirect STDOUT and STDERR to a null register since we do not care about them
    if [[ $? -ne 0 ]]; then
        echo "File $file does not have any foobar, adding one"
        echo "# foobar" >> "$file"
    fi
done

首先 $(date) 打印出時間,然後遍歷腳本的輸入參數,其實應該是各個文件,每一次循環都將相關文件全目錄賦給$file變量,然後用grep命令在當前文件裏搜索關鍵字foobar。後面這段命令:> /dev/null 2> /dev/null的意思是將grep命令的標準輸入,和標準錯誤輸出都重新定位到/dev/null設備上,其實就是捨棄,不要的意思。/dev/null是一種特殊的linux虛擬設備,專門用來傾倒不需要的垃圾數據。再後面的命令就是如果grep沒有找到相關關鍵字,就將這個關鍵字添加到當前的文件裏。

說了這麼多,纔要說到正題:條件判斷語句,其實很簡單。上面的例子中,兩個中括號裏面就是條件判斷。其實單箇中括號也可以作爲判斷語句的容器,但是可能會和其他有衝突,所以爲了減少錯誤,用雙中括號更能降低出錯的機會。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章