之前提到了很多正規化表示法以及他在awk與sed上的用途,昨天有談到case也能運用同樣的技巧,其實if條件判斷也可以。
要在if中採用正規化表示法,就必須使用兩層的方括號**[[ ... ]],以及=~**運算符號。下面這段程式可以用來判斷檔案的附檔名是否為rpm:
for packages in /tmp/*
do
if [[ $packages =~ .*\.rpm ]]; then
echo “$packages is a RPM package”
else
echo “File $packages is not a RPM package.”
fi
done
第3行的**\.rpm中的反斜線\是溢出字元,用意是將句點.**當成要比對的字串,而非特殊符號。
[本系列文章]
我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
我與BASH的每一天 - [3] 利用awk來擷取特定欄位
我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2
我與BASH的每一天 - [5] 利用awk來擷取特定欄位-3
我與BASH的每一天 - [6] 利用cut來擷取特定欄位
我與BASH的每一天 - [7] grep指令的妙用 - 1
我與BASH的每一天 - [8] grep指令的妙用 - 2
我與BASH的每一天 - [9] 正規化表示法 - 1
我與BASH的每一天 - [10] 正規化表示法 - 2
我與BASH的每一天 - [11] 正規化表示法 - 3
我與BASH的每一天 - [12] 正規化表示法 - 4
我與BASH的每一天 - [13] sed - 1
我與BASH的每一天 - [14] sed - 2
我與BASH的每一天 - [15] sed - 3
我與BASH的每一天 - [16] 多條件選擇 - case
我與BASH的每一天 - [17] 建立自動化的暫存檔 - mktemp