1.shell算術運算 可以使用shell結構來執行簡單的整數運算。只需將特定的算術表達式用"$(("和"))"括起。
echo $((100/3))
myvar="56" echo $(($myvar + 12))
也可以使用expr表達式
a=100 echo `expr $a \* $a`
2.應用字符串變量時最好把雙引號加上。
3.條件判斷
if [ condition ]; then
action
fi
注意:
在[]中,只能有一個判斷式;
在[]與[]之間,可以使用&& 或|| 組合。
4. declare -i 聲明一個整形變量。
5.fc -l
列出登錄主機之后,最近執行過得指令。
6.find用法
find . -name '*.txt' -exec rm -f {} \;
由當前目錄開始往下查詢擴展名是.txt的文件,找到之后,執行-exec刪除文件的指令,{}表示找到的文件,;表示執行指令-exec的終止符號。
7.basename
取得路徑名稱中最后的文件名部分。
8.dirname
取得二路徑名稱中的目錄部分。
9.${變量:位置起點:長度}和${變量:位置起點}
由指定位置開始,截取指定長度的子字符串。
filename="/etc/apache2"
substr=${filename:1:3},從第二個開始截取三個字串。etc
10.${@:起點}和${@:起點:個數}
由起點開始,取得后面所有的位置參數。
${@:1}
./poz.sh 88 77 66 99
88 77 66 99
11.計算字符串長度
${#變量名稱},返回變量值的字符串長度
filename="/usr/sbin/ntpdate"
echo ${#filename} ,長度17
12、算術運算
序號 名稱 語法 范例
1 算數擴展 $((算術式)) r=$((2+5*8))
2 使用外部程序expr expr 算數式 r=`expr 4 + 5`
3 使用$[] $[算術式] r=$[4 +5 ]
4 使用內置命令declare declare -i 變量=算術式 declare -i r=8+16
5 使用內置命令let let 算術式 let r=8+16
13、條件測試的寫法
執行某一個命令的結果,執行成功則返回0,為真;執行失敗則返回非0,為假;
傳回某一個命令執行結果的相反值. ! 命令;
使用復合命令((算式)) eg:((0))表示假;((1))表示真;((-1))表示真
使用Bash關鍵字'[['、']]'組成的式子:[[ 判斷式 ]] if [[ str > xyz ]] ; 判斷str字符串和xyz字符串的大小
使用內置命令:test 判斷式,真值傳回0,假值傳回1.
使用內置命令:[判斷式]
14.case
case語法
case 待測項 in
樣式串行1) 命令區域1;;
樣式串行2) 命令區域2;;
......
*) 命令區域;;
esac
15. for 語法
for 變量 in 串行
do
命令區域
done
for((初始條件;終止條件;異動項))
do
命令區域
done
無窮循環
for((;1;))
do
命令區域
done
16、while語法
while 條件測試
do
命令區域
done
IFS=':'
while read f1 f2 f3 f4 f5 f6 f7
do
echo "賬號:$f1,login shell 是: $f7 "
done < "/etc/passwd"
17、until 循環 如果循環為假,則執行,否則不執行
until 條件測試
do
命令區域
done
18、select ,建立一個列表。列表的選項,即串行中的各個字符。
select 選項變量 in 串行
do
命令區域
done
注意:列表提示符號由Bash的內置標量PS3定義,默認值是#?,可以改變PS3的值。select會給各個選項一個編號,編號由1開始遞增,當使用者鍵入編號,選擇其中某一選項時,該選項的內容就設置給選項變量,而鍵入的編號值則放入REPLY變量中。
19、函數語法
語法1
function 函數名稱()
{
命令區域
}
語法2
函數名稱(){命令區域}
語法3 如果使用關鍵詞function,那么,函數名稱后面的小括號可以省略
function 函數名稱
{
命令區域
}
函數調用
函數名稱
函數名稱 參數1 參數2 參數3 ....
20、sed 是一種非交互式的流編輯奇,可動態編輯文件。用法如下:sed '樣式命令' 文件
1)刪除某一段范圍的數據行。
sed '1,4d' datafile1 , 把第1到第4行數據刪除,剩余的顯示出來,d是sed的刪除命令
2)把含有“樣式”的數據行刪除。
sed '/La/d' datafile,把含有La的行刪除,剩下的顯示出來。其中,//代表搜索之意。
sed '/^$/d' datafile,刪除datafile的空白行。
sed '/[0-9]\{3\}/d' datafile,把含有“3位數”的行刪除,剩下的顯示出來。
3)把不含有“樣式”的數據行刪除
sed '/La/!d' datefile3,把不含有La的行刪除,剩下的顯示出來。
4)把含有“樣式”的數據行顯示出來。
sed '/La/p' datafile,把含有La的行顯示出來。p是sed的命令,它會把目前的數據顯示出來,但因為sed默認也會顯示不符合的數據行,修改如下:sed -n '/La/p' datafile。選項-n會抑制sed顯示出其它資料行的默認操作,只顯示符合樣式的數據行。
5)取代
sed -n 's/La/Oo/p' datafile s是取代的意思,第一對//中含括的字符串La是搜索的目標,第二對//含括的是置換的字符串Oo。把數據行中的字符串La換成Oo。上面這個指令,只會更換第一個出現的La而已。如果全部置換,應再加上全局命令g。如下:sed -n 's/La/Oo/gp' datafile。
sed -n 's/La//p' dataf3。把每一行第一個出現的La刪除(把La置換成空字符串)
sed 's/^...//' dataf3 把每一行開頭的3個字符刪除。
sed 's/...$//' dataf3 把每一行末尾3個字符刪除。
6)取用符合樣式的字符串
sed -n 's/\(La\)/\1Oo/p' dataf3。把找到的La存起來,用\1取回來在使用。結果:若數據行含有La字符串,則第一個出現的La會置換成LaOo,然后再顯示這些含有La的數據行。
7)找到符合樣式的數據行后,再進行取代的操作。
sed -n '/AAA/s/234/567/p' dataf3,找到含有AAA的那一行之后,將234換成567。
sed -n '/AAA/,/DDD/s/B/567/p' dataf3,將含有AAA到含有DDD的那幾行,皆將其中的B換成567。
sed -n '2,4s/B/567/p' dataf3由第2行到第4行,皆將其中的B換成567。
21、awk 是一種可以處理數據、產生格式化報表的語言,功能相當強大。awk的工作方式是讀取數據文件,將每一行數據視為記錄,每筆記錄以字段符分成若干字段,然后輸出各個字段的值。
1)awk常用的作用格式:
awk “樣式”文件,把符合樣式的數據行顯示出來;
awk ‘操作’ 文件,對每一行都執行{}中的操作;
awk ‘樣式{}’ 文件,對符合樣式的數據行,執行{}中的操作;
2)用法
awk ‘/La/’ dataf2 ,顯示含La的數據行;
awk ‘{ print $1 , $2 }’ dataf3 ,顯示dataf3每一行的第1和第2個字段;
awk
‘/La/{ print $1 ,$2 }’ dataf3,顯示含有La關鍵字的數據行的第1及第2個字段顯示出來;
awk -F: ‘/^ols3/{ print $3 ,$4}’
/etc/passwd ,使用選項-F,指定:為分隔字符,賬號ols3的(第3個字段)及gid(第4個字段)顯示出來;
awk –F: ‘BEGIN{OFS=”+++”}/^ols3/{print
$1,$2,$3,$4,$5}’ /etc/passwd。執行結果: ols3+++x+++1002+++1002+++ 。本例中,BEGIN{}區域指示awk一開始先做初始化的操作,即設定OFS=”+++”。變量OFS的作用是存儲輸出字段的分隔符。接著,尋找ols3的賬號行,找到后,使用print印出第1~第5個字段,且彼此用+++隔開。
取得網卡的IP
Ifconfig | grep ‘inet addr:’ | grep Bcast |
awk ‘{print $2}’ | awk –F: 'print $2'
取得系統內存大小
cat /proc/meminfo | awk ‘/MemTotal/{print
$2}’
posted on 2012-06-14 18:01
kxbin 閱讀(164)
評論(0) 編輯 收藏