變量、函數的定義與引用,其表達方法很多,我選下面這種:
變量名=`命定` #變量定義
$變量名 #變量的引用
函數名()
{
命定1;
命定2;
.....
} #函數的定義
函數名 #函數的引用
例如我第一篇博文裏的
user_add()
{
id smbmin &>/dev/null; #smbmin是已經存在的用戶
while (($?==0))
do
read -p "please input user name:" user_name;
id $user_name &>/dev/null;
done
useradd $user_name -g smbkefu -s /sbin/nologing;
smbpasswd -a $user_name;
echo "$user_name is ok!"
} #定義user_add函數
user_add #引用user_add函數
2.腳本中常用命定
sort 主要用來排序,它選項很多,我只列常用的
-n:按數字排序
-r:反向排序
-u: 只顯示不重複的
還有一個就是按某列進行排序
sort -t '分隔符' -k '列號'
uniq 主要用來去重和統計重複的行
-i:忽略大小寫
-c:統計不同行的重複次數
-u:只顯示唯一的行
awk以一行一行的處理文件,主要用來截取文件的某段信息
基本表達式爲:awk -F '分隔符' '條件{print 位置參數"輸出語句"位置參數}'
$0爲全行,
$n爲第N個字段
NR爲行號
NF爲總行數
sed文本在線編輯工具,一行一行處理,主要用於對文件的增刪改查
基本表達式爲:sed -[選項] "行號,行號 操作" 文件
或者 sed -[選項] "/條件/操作" 文件
其中主要常用選項有:
-i:直接對文件裏面內容操作
-n:顯示匹配的行,否者會全部顯示
刪:操作中刪除行爲d ;若要刪除字段這用 s/字段//g 來實現,原理是把這個字段變成空格來實現刪除。
增:在某行前添加一個新行主要用i,某行後面添加爲a;如要行首添加但不換行則爲 s/^/字段/,行尾添加但不換行爲 s/$/字段/;若要某個字段1前添加某個字段2則爲:s/字段1/字段1字段2/。
改:若要把字段1改爲字段2則爲:s/字段1/字段2/g,加了g就是全局替換,否則只替換匹配行的第一個字段。
查:用的是-n選項和p操作。
值得注意的是sed的操作中=爲打印行號。
cut 用來截取某個字段
-d '指定分隔符'
-f '提取的段號'
-c 以字符爲單位
wc 用來統計
-l 統計總共的行
-w 統計總共的字符
-m 統計總共的字節
grep用來過濾一般與|一起用
-c:統計行數
-n:顯示行號
-E:支持正則表達式,也可以寫作egrep
-v:顯示不匹配的行(取反)
tail -n 數字 取倒數幾行
head -n 數字 取頭幾行
這是我目前整理出來的實用的命定選項,如有錯誤請指正,如有更優或補充請建議