歡迎您光臨本站 註冊首頁

Linux中shell scripts

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

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次圍觀

http://coctec.com/docs/linux/show-post-46572.html