shell的作用是解釋執行使用者的命令,使用者輸入一條命令shell就解釋執行一條,這種方式成為互動式shell;shell還有一種執行命令的方式稱為批處理,即使用者事先編寫好乙個shell指令碼(script),其中有很多條命令,讓shell一次性執行這些命令。今天我們重點說的就是這種批處理shell。
>shell指令碼檔名以.sh結尾,檔案以第一行 #!/bin/bash 表示指令碼後面指定的直譯器是 /bin/bash
>shell檔案執行方法:chmod u+x 檔名 修改檔案可執行許可權
./檔名 直接執行檔案
>shell檔案的執行原理:建立子shell,由子shell執行當前命令,但有部分命令除外,例如cd.. 這種命令稱為shell的內建命令,這種命令不會fork子程序而是由自己執行命令。
$source ./script.sh
$ . ./script.sh
source 和 . 命令也是shell的內建命令,這種方式也不會建立子程序而是直接在互動式shell下逐行執行指令碼中的命令。
>shell變數:環境變數和本地變數
環境變數:可以從父程序傳遞給子程序
本地變數:只存在於當前shell,使用set可以顯示當前shell的所有變數和函式。
定義變數等號兩邊不能有空格:varname=value
使用export可以匯出環境變數
>變數引用:如果乙個變數叫做varname,使用$可以表示他的值,也可以不加花括號,加上花括號是可以用來進行字串拼接:假設value=b; $aaa 輸出:baaa
>檔名代換:
萬用字元: * 匹配0個或者多個任意字元
?匹配乙個任意字元
[若干字元] 匹配方括號中任意乙個字元的一次出現
>命令代換:
` `或者$()
由反引號括起來的也是一條命令,shell先執行該命令,然後將輸出結果立刻代換到當前命令列中
$ date='date'
$echo $date
也可以 $date=$(date)
算數運算$(( )) $echo $(($date+3)) 只能計算整數
區別:` ` 反引號本身對 \ 有轉義的作用,所以如果要使用 \的話就需要 \\
$() 沒有對 \進行轉義 \ 還是 \
>轉義字元 \
作用:用於去除緊跟其後的單個字元的特殊意義(回車除外),即緊跟其後的字元取字面值
eg:$ touch \$\ \$ 建立乙個名字為$ $的檔案
>單引號 『 』:字串
作用:保持引號內所有字元的字面值
>雙引號 「 」:字串
作用:保持引號內所有字元的字面值,但有些字元例外
比如:$加變數名可以取變數的值
`` 仍表示命令替換
\$表示$的字面值
\`表示`的字面值(單引號)
\"表示"的字面值
\\表示\的字面值
Linux shell指令碼程式設計之函式
在編寫功能比較複雜的shell指令碼時,完成具體任務的 有時會被重複使用,bash shell指令碼提供函式特性實現 復用,函式是被賦予名稱的指令碼 塊。一 建立函式 在bash shell指令碼中建立函式的格式如下 function name 乙個簡單的例子如下 cat test.sh bin b...
linux shell高階指令碼程式設計之函式篇
1.建立函式 function name 也可以寫成下面這種形式 name 2.函式返回值 函式退出狀態是函式最後條命令返回的退出狀態,可以用 確定函式的退出狀態 使用return bin bash func1 func1 echo now value 使用函式的輸出 bin bash func1 ...
Linux shell程式設計之控制指令碼之定時執行
目錄 控制指令碼之定時執行 cron時間表 系統不關機情況下 與cron相關的檔案和目錄 anacron crontab定時任務 定時任務實戰 cron時間表 系統不關機情況下 linux使用cron程式 通過檢查cron時間表 來計畫要定期執行的指令碼 每個使用者 包括root 都有自身的cron...