例子1:印出字串
先建一個 test.sh 檔,然後寫個簡單的 shell
# test.sh #! /bin/bash # This is a simple example of linux shell echo "Hello Linux!!!"
//執行他 $ sh test.sh
執行後你應該會看到 "Hello Linux!!!" 的字串
<註> "#"代表是註解
Shell 變數:
在 Shell 中變數賦值一般採如右形式: 變數名稱=字串
<註> 記得"="號兩邊不要有空白鍵,會出錯
例子2:學會賦值
# test.sh #! /bin/bash name=tom echo $name echo ${name}test echo test$name
執行後會有以下結果
你可以自己去體會那些用法是甚麼意義
Shell 萬用字元:
1. * 符號
* 符號用於匹配字串零次或多次出現。例如 l* 可以匹配 like li 等,換句話說就是可以匹配所有以 * 符號前面的字串為首碼的字串。
2. ? 符號
? 符號僅能匹配對應位置的一個字元,例如 fil? 可以匹配到 file filt 等,但是不能匹配 filesystem 等,因為 filesystem 後面跟的是多個字元
3. [ ] 符號
[ ] 符號的作用是匹配該字元組所限定範圍內的任何一個字元。方括號中的字元組可以直接由給出的字元組成,你有可以限定其範圍,但是中間必須加個 - 符號。
例如 f[a-z]le 可以匹配到 file fale ftle等相關字串
4. ! 符號
! 符號通常與 [] 符號配合使用。 ! 的作用是匹配不列在 [] 中的字元,例如 t[!a-z]st 表示他可以匹配到不是從 a-z 的字元像是 t2st t3st等
例子3:如何由自己輸入值
# test.sh #! /bin/bash echo "input your name and age:" read name age echo "name is :"$name echo " age is :"$age
使用 read 函數來做賦值的動作,執行 shell 後如下
關於 echo 函數:
在 echo 函數中還定義了一組轉義字元,用於輸出控制或列印無法顯示的字元。在你要使用轉義字元時,要記得加入 "-e" 選項
詳細的轉義字元有甚麼可以去看 鳥哥的私房菜
例子4:學會用 Shell 陣列
#!/bin/bash name=(tom jim jane chris) echo "name[0] is :"${name[0]} echo "name[1] is :"${name[1]} echo "name[2] is :"${name[2]} echo "name[3] is :"${name[3]}
這個 shell 必須使用 bash 腳本才可以正常運作,所以請用 bash 執行他
//使用 bash 來執行他 $ bash test.sh
也可以一次取出陣列中所有元素
#!/bin/bash name=(tom jim jane chris) echo "name set is :"${name[*]} echo "name set is :"${name[@]}
如上圖,使用 * @ 符號可以取出陣列所有元素
例子5:陣列的修改與刪除
#!/bin/bash name=(tom jim jane chris) name[0]=myself echo ${name[@]} unset name[0] echo ${name[@]} unset name[@] echo ${name[*]} name[0]=myself name[1]=tom echo ${name[@]}
看到輸出的結果,你大概就可以明白 unset 是用來清除元素的
Shell 環境變數:
用於描述使用者的的操作環境,或者說是通過設置環境變數來配置使用者的操作環境。Linux 中的環境變數包括:使用者所使用的 Shell 類型、工作的主目錄、登錄方式等。
在 Linux 的環境變數中,有的是系統預設設定的,用戶只有唯讀的許可權;也有一些是應用性的環境變數,具有相應操作許可權的用戶可以修改
Linux 中常用的基本環境變數如下圖
例子6:環境變數的顯示
#!/bin/bash echo "PWD:"$PWD echo "path:"$PATH echo "Logname:"$LOGNAME echo "Shell:"$SHELL echo "HOME:"$HOME執行後可以印出環境變數值
刪除環境變數:
想刪除環境變數值的話可以直接使用 unset
例如: $unset PATH
可以清空 PATH 中所存的值
Shell 的 if 用法
(1)字串測試符號
字串測試符號的作用是用於測試字串的返回值,具體可以看下圖
字串測試的範例:
#!/bin/bash echo please input name: read name if test -n $name then echo "name is :"$name else echo "name is null" fi上述的程式是獲取使用者的輸入,如果字串個數大於0,則輸出你所輸入的字串,否則提示輸入會是空的。執行後如下
(2) 數值測試運算子
類似於前面的字串測試符,主要用於數值運算時的判斷,具體參數如下:
(3) 邏輯運算子
用於邏輯語句的判斷,也就是經常用到的 "和" 、 "或" 、 "非"
下面列出常用的邏輯運算子
例子7:case語句的使用
#!/bin/bash echo please input your name: read name case $name in Tom) echo your name is Tom ;; Jim) echo your name is Jim ;; *) echo "sorry we don't know your name" ;; esac執行後則如下,輸入 Tom 或 Jim 會給予對應的回應
例子8:for迴圈的使用
#!/bin/bash name=(tom jim my chris) for i in ${name[*]} do echo $i done執行後如下,用 for 迴圈列出陣列內容
例子9:while迴圈的使用
#!/bin/bash type=""; echo input your type: read type while [ $type != "quit" ] do echo "your input is :"$type echo input your type: read type done可由使用者自己輸入字串,並 print 出來,只有輸入 quit 時才會跳出迴圈
例子10:until 語句練習
#!/bin/bash type=""; echo input your type: read type until [ $type = "quit" ] do echo "your input is :"$type echo input your type: read type done執行後如下圖,如果你輸入的字串不是 quit 就會一直進入迴圈中
例子11:簡單的函數使用
自己寫一個可以 print 出字串的函數,再由自己呼叫試試看
#!/bin/bash function printName() { echo my name is Chris!!! } printName執行看結果
例子12:直接傳遞變數
#!/bin/bash name=tom printName() { echo name is :$name name=chris echo name is :$name } printName echo name is :$name執行看結果,如果有學過程式語言,這應該不難理解
例子13:位址參數
#!/bin/bash printName() { echo $1 echo $2 } printName Tom chris上面程式的 $1 $2 分別代表你傳入的第一和第二個參數
這真的很簡單,但是先學會這些小基礎對以後也是有幫助的,不應該看不起它,而是要接受它,一開始寫簡單的東西為自己建立自信心真的很重要。
沒有留言:
張貼留言