shell腳本很多人談論說難,當然,這點不可否認。但是shell腳本難,並不是難在它的規則,語法上。shell腳本趨向於編程,編程難嗎?難!!它難在哪!它難在寫程序時要像計算機一樣去思考,這就是難點。shell也一樣,書寫語法,規則,並不難。幾個小時你就可以學會。但是,把自己變成機器一樣去思考,這就比較難了。如果想要克服這一點,那麼需要長時間的磨練與不停的思考。
shell scripts的注意事項:shell scripts的撰寫執行需要注意以下幾點:
1、指令的解析執行是從上至下,從左到右的。
2、指令、選項與參數間的多個空格會被忽略。
3、空行和[TAB]鍵視作空格。
4、讀取到Enter符號(CR)就開始嘗試執行
5、可以用"\"換行
6、“#”為注釋
shell script 的書寫,把腳本單獨放一個目錄中,腳本要分段書寫,並充分利用注釋。
1、第一行#!/bin/bash
2、程序內容說明-文件頭
3、主要環境變量、變量宣告
4、函數、主程序部分
5、執行成果報告-返回值
如果一個腳本長時間沒用,或者是他人接手的時候根本看不懂這個腳本是干什麼用的,本著為他人方便為自己方便的原則,就是寫文件頭。文件頭的內容包括,腳本名稱、腳本的功能描述、作者的聯系方式、版權宣告、歷史記錄、其他,等等
在shell腳本中變量是最常用的,而且還會用到返回值,那麼什麼是變量,腳本返回值代表什麼。
變量是腳本編程中進行數據表現的一種方法,是計算機為了保留數據項,而在內存中分配的一個位置或者一組位置的標識或名字、變量既可以出現在算術操作中,也可以出現在字符分析過程中、變量的名字就是變量保存值的地方。引用變量的值就叫做變量的替換。
變量名必須以字母或者下劃線開始,後面跟字母數字或下劃線。變量用“=”賦值時不要留空格。變量名是大小寫敏感的、可以定義NULL值變量。例如d= c="",不要用特殊字符。如:? , * 等,不要和內部變量沖突。
變量宣告、函數等主程序等,為腳本內容,執行完後script的返回值。返回值是命令的退出狀態,用來檢測命令執行是否成功。比如
0 代表 成功(success)
non-zero 代表 Failure
2 代表 不正確的用法(incorrect usage)
126 代表 不可執行(Not an executable)
127 代表 命令找不到(Command not found)
我們可以用 exit n 、return N 來定義,如下圖我們可以看下命令執行後的,返回值,如下圖
某些時候需要兩相互關聯的變量才能完成一個腳本,這個時候需要數組格式var[index]=value 如下圖
shell腳本常用的循環。
------------------------------------------
條件語句的,格式
if [condition]
then
command
fi
-------------------------------------------
if[condition];then
command1
else
command2
fi
---------------------------------------------
if[condition1];then
command1
elif[condition2];then
command2
else
command3
fi
-----------------------------------------------
for循環
格式:for NAME in [list];do
COMMANDS;
done
例:如下圖:
--------------------------------------------------
while循環
格式:while CONTROL-COMMANDS;do
CONSEQUENT-COMMANDS;
done
例:如下圖
---------------------------------------------------------------
until循環
格式:until TEST-COMMAND;do
CONSEQUENT-COMMANDS;
done
例:如下圖
-------------------------------------------------------
case循環
格式:caseEXPRESSION in
CASE1 )
COMMAND-LIST
;;
CASE2)
COMMAND-LIST
;;
...CASEN)
COMMAND-LIST;;
esac
例:如下圖
-----------------------------------------------------------
select (從ksh引入)
格式:select WORD [in LIST];do
RESPECTIVE-COMMANDS;
done
例如下圖
-------------------------------------------------------------
從上面的例子中看到有break的字樣,break語句用來在正常結束之前退出當前循環,和break想對應的還有continue語句,continue語句是幾句for,while,until, select內的循環。
在shell裡還有正則表達式,前面文章裡已經介紹過,就不詳加介紹, shell就先討論到這裡