關於變量的幾個問題:
1、shell編程由於和命令行有莫大的關係,所以對空格等字符比較敏感。
2、定義變量 value=xx 而不能像 value = xx 這樣出現空格。
3、通過 export value 可以將value變成環境變量,使其子進程也可以使用該變量。
4、環境變量多爲大寫,普通變量爲小寫
5、一般通過 value = $(shell 命令) 將輸出結果賦值給value
6、$#代表參數個數,$1,$2,......代表對應第幾個參數
常用的邏輯:
條件:
-e 文件是否存在
-f 是否存在且爲文件
-d 是否存在且爲目錄
-eq 是否相等
-nq 是否不等
-gt 是否大於
-lt 是否小於
判斷:
if [ "條件1" -o "條件2" ];then if [ "條件1" ] || [ "條件2" ];then
命令; = 命令;
fi fi
case $1 in
"條件1" )
命令段1
;;
"條件2" )
命令段2
;;
* )
命令段3
;;
esac
循環:
while [ "循環條件" ]
do
命令段;
done
for value in xxx1 xxx2 xxx3
do
命令段;
done
for ( ( i=0 ; i<10; i++ ) )
do
命令段;
done
正則表達式:
't[^a-z]st' : 第二個字母不是a-z的對象 (^取反符,a-z爲選取對象)
'go\{2,5\}g': 限定o的重複次數爲2到5個。
^ : 放在括符外面爲行首符。
$ :爲行尾符。
. : 有個任意字符。
* : 重複前一個 0到無數次
常用工具
cut -d '分隔符' -f 區域 獲取分割過後的某塊區域
cut -c 2-12 獲取每行2到12之間字符
grep -n 查找字符串
sort 排序工具
wc 顯示字符數和行數
sed 和 awk