[Linux](十七) --shell bash學習----基本語法及練習
寫在開頭
今天就開始寫小指令碼啦,但在這之前得了解一些基本的語法,學習每個語言基本都有的for,while ,if swtich啊,無非就是換了種格式。為了能更熟悉,照著鳥哥的私房菜裡的練習都打了一遍。
下面是學習的一些語法
1.變數
之前已經學過變數的設定,範圍了,可以看看
但在寫shell裡有幾個特殊變數,需要注意的:
-
$0,$1,$2.... 代表指令碼後面接的引數,$0是指令碼名稱,$1是指令碼後面第一個引數,$2是指令碼第二個引數,以此類推。
-
$#:指指令碼後面你輸出引數的個數。
-
$@:就是把你輸入的引數都輸出出來。
可以看看這個例子:
程式碼:

圖片.png
結果:

圖片.png
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,或),其實一個條件為真,就是真。
!(非):就是非...
例子:
程式碼:

圖片.png
結果:

圖片.png
判斷語句
應該學過一些變成基礎都很容易學會,背好格式就好了。
格式:
if [條件]; then
一些內容
fi
來練習個書上的例子就好了。
程式碼:

圖片.png
結果:

圖片.png
上面的程式碼用了兩個if語句,現在換成if ..elif ...esle 試試。
程式碼:

圖片.png
現在只要一個if語句就能完成啦。
3.case...esac 類似switch
格式:
就是什麼在什麼裡面,然後執行一段程式碼。
case $變數名稱 in
"變數內容")
程式內容
;;
"變數內容")
程式內容
;;
*)
程式內容
;;
esac
例子:
程式碼:

圖片.png
結果:

圖片.png
4. 迴圈:for while... do...done, until... do... done
while格式:
while [條件]
do
程式內容....
done
例子:計算機1+2+3+....+100的值

圖片.png
結果:

圖片.png
- 注意的地方,以前說過的,=號兩邊不能留空白。
- 中括號裡面每個元件都要分開。
until格式:
until [條件]
do
程式內容....
done
例子:改了下上面的例子,改成until格式。

圖片.png
發現條件反了過來,結果還是5050。類似於java的do while。
for格式:
for ((初始的值;終止的值;每次增加的值))
do
程式內容....
done
例子:

圖片.png
5.function,功能函式
function格式:
function 名稱 () {
程式內容....
}
例子,定義一個函式,輸入一個名字,輸出hello+名字。
程式碼:

圖片.png
結果:

圖片.png