全面講解CentOS shell中知識
什么是CentOS shell程序呢? 簡單的說CentOS shell程序就是一個(gè)包含若干行shell或者linux命令的文件.就像編寫高級語言的程序一樣,編寫一個(gè)shell程序需要一個(gè)文本編輯器.如VI等.
在文本編輯環(huán)境下,依據(jù)shell的語法規(guī)則,輸入一些shell/linux命令行,形成一個(gè)完整的程序文件.
CentOS shell參數(shù)
如同ls 命令可以接受目錄等作為它的參數(shù)一樣,在CentOS shell編程時(shí)同樣可以使用參數(shù)。Shell有位置參數(shù)和內(nèi)部參數(shù)。
1、位置參數(shù)
由系統(tǒng)提供的參數(shù)稱為位置參數(shù)。位置參數(shù)的值可以用$N得到,N是一個(gè)數(shù)字,如果為1,即$1.類似C語言中的數(shù)組,Linux會把輸入的命令字符串分段并給每段進(jìn)行標(biāo)號,標(biāo)號從0開始。第0號為程序名字,從1開始就表示傳遞給程序的參數(shù)。如$0表示程序的名字,$1表示傳遞給程序的***個(gè)參數(shù),以此類推。
2、內(nèi)部參數(shù)
上述過程中的$0是一個(gè)內(nèi)部變量,它是必須的,而$1則可有可無。和$0一樣的內(nèi)部變量還有以下幾個(gè)。
$# ----傳遞給程序的總的參數(shù)數(shù)目
$? ----上一個(gè)代碼或者CentOS shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程序的所有參數(shù)組成的字符串。
下面舉例進(jìn)行說明:
建立一個(gè)內(nèi)容為如下的程序P1:
- echo “Program name is $0”
- echo “There are totally $# parameters passed to this program”
- echo “The last is $?”
- echo “The parameters are $*”
執(zhí)行后的結(jié)果如下:
- [beichen@localhost bin]$ P1 this is a test program //傳遞5個(gè)參數(shù)
- Program name is /home/beichen/bin/P1 //給出程序的完整路徑和名字
- There are totally 5 parameters passed to this program //參數(shù)的總數(shù)
- The last is 0 //程序執(zhí)行結(jié)果
- The parameters are this is a test program //返回有參數(shù)組成的字符串
下面我們利用內(nèi)部變量和位置參數(shù)編寫一個(gè)名為del的簡單刪除程序:
- #name: del
- #author: liangnian
- #this program to compress a file to the dustbin
- if test $# -eq 0
- then
- echo “Please specify a file!”
- else
- gzip $1 //先對文件進(jìn)行壓縮
- mv $1.gz $HOME/dustbin //移動(dòng)到回收站
- echo “File $1 is deleted !”
- fi
變量表達(dá)式
在上面我們編寫的小程序中我們用到了一個(gè)關(guān)鍵字test,其實(shí)它是CentOS shell程序中的一個(gè)表達(dá)式——比較(test)。通過和CentOS shell提供的if等條件語句(后面我們會介紹)相結(jié)合我們可以方便的完判斷。
其用法如下:
test 表達(dá)式
表達(dá)式所代表的操作符有字符串操作符、數(shù)字操作符、邏輯操作符以及文件操作符。其中文件操作符是一種CentOS shell獨(dú)特的操作符,因?yàn)閟hell里的變量都是字符串,為了達(dá)到對文件進(jìn)行操作的目的,于是才提供了這樣的一種操作符。
1、 字符串比較
作用:測試字符串是否相等、長度是否為零,字符串是否為NULL(注:bash區(qū)分零長度字符串和空字符串)
常用的字符穿操作符有:
= 比較兩個(gè)字符串是否相同,同則為“是”
!= 比較兩個(gè)字符串是否相同,不同則為“是”
-n 比較字符串長度是否大于零,如果大于零則為“是”
-z 比較字符串的穿度是否等于零,如果等于則為“是”
2、 數(shù)字比較
這里區(qū)別于其他編程語言,test語句不使用>、<、>=類似的符號來表達(dá)大小的比較,而是用整數(shù)式來表示這些。
- -eq 相等
- -ge 大于等于
- -le 小于等于
- -ne 不等于
- -gt 大于
- -lt 小于
3、 邏輯操作
! 反:與一個(gè)邏輯值相反的邏輯值
-a 與(and):兩個(gè)邏輯值為“是”返回值才為“是”,反之為“否”
-o 或(or):兩個(gè)邏輯值有一個(gè)為“是”,返回值就為“是”
4、 文件操作
文件測試表達(dá)式通常是為了測試文件的信息,一般由腳本來決定文件是否應(yīng)該備份、復(fù)制或刪除。由于test關(guān)于文件的操作符有很多,我們只列舉一些常用的。
- -d 對象存在且為目錄返回值為“是”
- -f 對象存在且為文件返回值為“是”
- -L 對象存在且為符號連接返回值為“是”
- -r 對象存在且可讀則返回值為“是”
- -s 對象存在且長度非零則返回值為“是”
- -w 對象存在且可寫則返回值為“是”
- -x 對象存在且可執(zhí)行則返回值為“是”
- file1 –nt(-ot) file2 文件1比文件2新(舊)
在這里就簡單的介紹下CentOS shell。
【編輯推薦】