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就先討論到這裡
本文出自 「網路技術」 博客,謝絕轉載!
[火星人 ] Linux中shell scripts已經有708次圍觀