歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux中shell scripts

Linux中shell scripts

日期:2017/2/28 16:03:40   编辑:SHELL編程

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就先討論到這裡

Copyright © Linux教程網 All Rights Reserved