寫在開頭
今天就開始寫小腳本啦,但在這之前得了解一些基本的文法,學習每個語言基本都有的for,while ,if swtich啊,無非就是換了種格式。為了能更熟悉,照着鳥哥的私房菜裡的練習都打了一遍。
下面是學習的一些文法
1.變量
之前已經學過變量的設定,範圍了,可以看看
但在寫shell裡有幾個特殊變量,需要注意的:
-
$0,$1,$2… 代表腳本後面接的參數,$0是腳本名稱,$1是腳本後面第一個參數,$2是腳本第二個參數,以此類推。
-
$#:指腳本後面你輸出參數的個數。
-
[email protected]:就是把你輸入的參數都輸出出來。
可以看看這個例子:
代碼:
結果:
2.判斷符号[],和判斷語句if…else…fi
使用判斷符号需要遵循一些規則:
- 變量最好要加上雙引号。
-
每個元件之間都要有空格。(一開始老是犯錯)
- 常量最好要加上單引号。
那怎麼使用呢,下面我列舉了一些比較容易記的。
關于檔案類型的判斷的
-e(exist) ,-f(file),-d(directory),-L(Linkfile).
分别是,檔案名是否存在,檔案是否存在,目錄是否存在,連接配接檔案是否存在。
關于檔案權限的判斷
-r(read讀),-w(write寫),-x(excute執行)。
分别是,是否具有讀權限,是否具有寫的權限,是否具有執行的權限。
兩個檔案的比較
-nt (newer than),-ot(older than),ef(equal file)
分别是,第一個檔案是否别第二個檔案新,第一個檔案是否比第二個檔案舊,兩個檔案是否為同一個檔案。
關于兩個整數之間的大小比較
-eq (equal),-ne(not equal),gt(greater than),lt(less than),-ge(greater than or equal),-le(less than or equal)
分别是,等于,不等,大于,小于,大于等于,小于等于。
關于字元串的判斷
-z (zero):字元串是否為空,空的話,傳回True
-n:與-z相反
str1 = str2: str1是否等于str2,等于傳回True
str1 != str2:str1是否不等于str2,等于傳回False
類似于 或,且,非的條件判斷
-a (all,就是且),兩個條件同時成立才是真。
-o (or,或),其實一個條件為真,就是真。
!(非):就是非…
例子:
代碼:
結果:
判斷語句
應該學過一些變成基礎都很容易學會,背好格式就好了。
格式:
if [條件]; then
一些内容
fi
來練習個書上的例子就好了。
代碼:
結果:
上面的代碼用了兩個if語句,現在換成if …elif …esle 試試。
代碼:
現在隻要一個if語句就能完成啦。
3.case…esac 類似switch
格式:
就是什麼在什麼裡面,然後執行一段代碼。
case $變量名稱 in
“變量内容”)
程式内容
;;
“變量内容”)
程式内容
;;
*)
程式内容
;;
esac
例子:
代碼:
結果:
4. 循環:for while… do…done, until… do… done
while格式:
while [條件]
do
程式内容…
done
例子:計算機1+2+3+…+100的值
結果:
- 注意的地方,以前說過的,=号兩邊不能留白白。
- 中括号裡面每個元件都要分開。
until格式:
until [條件]
do
程式内容…
done
#####例子:改了下上面的例子,改成until格式。
發現條件反了過來,結果還是5050。類似于java的do while。
for格式:
for ((初始的值;終止的值;每次增加的值))
do
程式内容…
done
例子:
5.function,功能函數
function格式:
function 名稱 () {
程式内容…
}
例子,定義一個函數,輸入一個名字,輸出hello+名字。
代碼:
結果: