shell-script簡稱shell(這裡專指的linux下的script)
關鍵字:test,if-else, fo-do-done,case
shell-script的應用非常廣泛,各種領域都有shell-script的應用,這裡我們主要講講日常應用。
關於執行,一般用source、 sh、 ./相對路徑/文件名、 /絕對路徑/文件名。這是一般常用的執行方式。
首先學習shell-script的test,主要檢測系統上面文件或者文件的屬性。具體test的測試標誌和代表的意義如下:
第一、關於文件類型的檢測。
-e:文件是否存在。
-f:文件存在是否為一般文件
-d:文件存在是否為目錄
-b:文件存在是否為塊設備(block device)
-c:文件存在是否為字符設備(character device)
-S:文件存在是否為Socket文件
-p:文件存在是否為FIFO(pipe)文件
-L:文件存在是否為一個連接文件(無論hard link or symbol link)
第二、關於文件的權限檢測。
-r:文件存在且具有可讀權限
-w:文件存在且具有可寫權限
-x:文件存在且具有可執行權限
-u:文件存在且具有SUID屬性
-g:文件存在且具有SGID屬性
-k:文件存在且具有Sticky bit屬性
-s:文件存在且為非空文件
第三、兩個文件的比較
-nt:(newer than)文件一比文件二新?
-ot:(older than)文件一比文件二舊?
-ef:文件一和文件二是否為同一文件,如hard link ,是否指向同一inode?
第四、整數的比較
-eq:值相等(equal)
-ne:值不等(not equal)
-gt:number1大於number2(greater than)
-lt:number1小於number2(less than)
-ge:number1大於等於number2(greater than or equal)
-le:number1小於等於number2(less than or equal)
第五、string的判斷
test -z string:string為0?空為true
test -n string:string為0?空為false
test str1=str2:str1等於str2,為true
test str1 != str2 :不等於,為true
第六、多重判斷(也可成為邏輯判斷)
-a:兩種狀況同時為true,則為true。eg:test -r file -a -x file,file既有可讀和可執行時,才為true。
-o:任意一條為true,則為true。eg:test -r file -a -x file,file可讀或者可執行時都為true,當file同時不可讀,不可執行時才為false。
!:邏輯非。
利用[]可以省略test,兩者的效果一樣。但是在shell-script中使用[]時,[]兩邊一定要使用空格。還有就是[]裏面的變量,最好都用雙引號括起來,變量用單引號和雙引號括起來都可以。這點很重要。
shell script 的default變量($0,$1,$2...),script內使用的特殊變量如下:
$#:表示後面的參數個數, $4代表$#是4。
$@:表示 "$1" "$2" "$3" ,每個變量是獨立的(用雙引號括起來)
$*:表示 "$1 $2 $3"。
其實$@和$*差不多,一般情況下直接使用或者記憶$@即可。
使script參數偏移的指令shift,在script中加入shift後會使script的參數偏移。。
下面學習if...then...fi, if...then...else...fi, if...then...elif...then... else...fi
使用if條件判斷時,條件判斷使用的邏輯運算&&(and)和||(or)相當於test中的-a和-o參數。
case...in...esac
function功能:function name(){ 程序 }
shell-script中的循環:有while...do...done, until...do...done(不定循環), while [ condition ] do programming done 當condition成立時開始循環,知道condition不成立終止循環,until [ condition ] do programming done, 當condition不成立時開始循環和while相反,指導condition成立時終止循環。
固定循環:for...do...done, for variable in val1 val2 val3 do programming done。 for的另一種用法和C語言一樣,for (( init val; end val; increment val)) do programming done。
經過兩天的完全學習,終於學習完shell-script了。還是重在實踐啊。。。
转载于:https://blog.51cto.com/ting2junshui/715655