Follow me---快速入門shell指令碼編寫

來源:互聯網
上載者:User

標籤:shell   指令碼   工作   android   linux   

努力讓自己工作變得高效,會寫指令碼,會用指令碼,往往事半功倍。所以,今天就抽出一些時間學習學習Shell指令碼。

--------------前方高能預警,本文寫的略自娛自樂,如有看著不適,請狂戳右上方----------------------

shell有兩種執行命令的方式:

互動式(Interactive):解釋執行使用者的命令,使用者輸入一條命令,Shell就解釋執行一條。

批處理(Batch):使用者事先寫一個Shell指令碼(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。

我們要知道bash和sh不是一個東西,我們需要瞭解,bash完全相容sh,也就是說,用sh寫的指令碼可以不加修改的在bash中執行。


由於本人是用vi寫的,剛開始用vi會感覺這東西尼瑪是人用的麼,難用的要死,如果決定用vim編輯器,在開始寫shell之前,還是默默的熟悉一下vi的編輯命令吧。可以參考連結http://blog.csdn.net/hnulwt/article/details/43062065

來吧,開始寫shell

終端輸入 vi test.sh

開始編輯輸入一下內容:(其實在vi編輯器裡面輸入內容是最難的了!!!)

echo "Hi, SB"read PERSONecho "$PERSON, ni shi hou zi pai lai de dou bi ma ?"
輸入完畢後,按Esc,然後輸入 wq,按enter

好了已經儲存並且退出了。(以上步驟如果還不夠熟練,建議你換個姿勢~再來一次並且明白每個步驟的作用)

接著運行,啟動並執行話有好幾種方式,這裡用倆種吧

第一種,輸入 ./test.sh(注意!前面有個點,表示目前的目錄下)

第二種,輸入 sh test.sh (當然bash test.sh也可以啦,前面說了bash對sh相容是很好的,當然我這裡不是看敲sh方便嘛,就倆個字元。(尼瑪!多敲倆個字元能死。。))

好了,看看結果。咦?怎麼不對。。。

Linux有個許可權系統,我們這樣建立的檔案是沒有執行許可權的,因為預設建立的檔案許可權是 -rw-r--r--,至於不瞭解這一出字元的意思,查吧,網上資料到處都是。所以,在執行之前還需要給他加許可權,命令列輸入 chmod +x ./test.sh,即可,這樣就增加了可執行許可權。(偶爾我會簡單粗暴的chmod 777 ./test.sh,當然這不是什麼好方法~,這個和前面說的是有區別的哈,可以通過 ls -l | grep test.sh 查看倆個賦予許可權的區別),至於上面敘述的有疑問,就藉助搜尋引擎吧,也可以直接回複提問

好了,這下可以運行我們的程式了,敲入 ./test.sh 或 sh test.sh 運行,是不是有驚喜啊!居然說出了“Hi SB”,緊接著我輸入了nima 然後後面的字元也就出來了。運行結果如:



變數概念

好了,第一個小程式運行成功了,接下來看看變數定義:

例子:varibleName="value"

首先有一點,變數名和等號之間不能有空格,這點千萬注意,因為我們平時寫其他程式的時候可能已經養成了這種習慣,在shell這裡需要注意這個習慣,

然後要知道的一些變數命名規則:

1,首個字元必須為字母(a-z,A-Z)。

2,中間不能有空格,可以使用底線(_)。

3,不能使用標點符號。

4,不能使用bash裡的關鍵字(可用help命令查看保留關鍵字)。

定義好變數我們就要開始使用變數了,如何使用變數,需要在自己定義的變數名上加上大括弧,然後最前面寫上$字元,例如

who="dog"

echo who is ${who}?

其實變數可以直接用$who取,但是為了養成好習慣,還是加上括弧吧。

接著我們對shell的變數類型做個瞭解,有三種變數:

1 局部變數局部變數在指令碼或命令中定義,僅在當前shell執行個體中有效,其他shell啟動的程式不能訪問局部變數。 2 環境變數所有的程式,包括shell啟動的程式,都能訪問環境變數,有些程式需要環境變數來保證其正常運行。必要的時候shell指令碼也可以定義環境變數。 3 shell變數shell變數是由shell程式設定的特殊變數。shell變數中有一部分是環境變數,有一部分是局部變數,這些變數保證了shell的正常運行

算數運算

Bash 支援很多運算子,包括算數運算子、關係運算子、布林運算子、字串運算子和檔案測試運算子。
原生bash不支援簡單的數學運算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。
expr 是一款運算式計算工具,使用它能完成運算式的求值操作。

接著寫一小段shell,按照:

# /bin/bashvalue=`expr 2 + 2`echo "Total value :${value}"
圖中有幾個點要注意,第一行是linux的注釋,以#號開頭。

在第二行中注意賦值地方是沒有空格的,而在計算運算式的時候之間是有空格的。 expr 2 + 2運算式被 ` 號括起來。注意 · 號並不是單引號,而是鍵盤上Esc下面的符號。(半形英文模式)

運行結果

[email protected] /Desktop
$ sh test.sh
Total value :4

好了接著跟我一起輸入如下內容:

# /bin/basha=10b=20value=`expr 2 + 2`echo "Total value :${value}"value=`expr $a \* $b`echo "a * b : ${value}"value=`expr $b % $a`echo "a % b : ${value}"if [ $a == $b ]then    echo "a equals b"fiif [ $a != $b ]then    echo "a not equals b"fi

一起看看運行結果是不是相同。

$ sh test.sh
Total value :4
a * b : 200
a % b : 0
a not equals b

對上面稍做說明:

在計算a * b的時候,我們的表示有用到逸出字元 \ (反斜線) 

條件運算式要放在方括弧之間,並且要有空格,例如 [$a==$b] 是錯誤的,必須寫成 [ $a == $b ]

if...then...fi 是條件陳述式,後面我們會對其再進行瞭解

關係運算

接著上面的指令碼,我們繼續編輯輸入:

if [ $a -eq $b ]then    echo "$a -eq $b"else    echo "a not equals b "fiif [ $a -gt $b ]then    echo "$a gt $b"else    echo "a not greater than b"fiif [ $a -le $b ]then    echo "$a le $b"else    echo "a not less or equal to b"fi

運行結果:(有前面編輯輸入過的內容哈)

$ sh test.sh
Total value :4
a * b : 200
a % b : 0
a not equals b
a not equals b
a not greater than b
10 le 20

好了,寫指令碼的時候就能猜出來-gt 和-le的作用吧。我們系統的來看看

關係運算子列表

運算子 說明 舉例
-eq 檢測兩個數是否相等,相等返回 true。 [ $a -eq $b ] 返回 true。
-ne 檢測兩個數是否相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt 檢測左邊的數是否大於右邊的,如果是,則返回 true。 [ $a -gt $b ] 返回 false。
-lt 檢測左邊的數是否小於右邊的,如果是,則返回 true。 [ $a -lt $b ] 返回 true。
-ge 檢測左邊的數是否大等於右邊的,如果是,則返回 true。 [ $a -ge $b ] 返回 false。
-le 檢測左邊的數是否小於等於右邊的,如果是,則返回 true [ $a -le $b ] 返回 true。


這次我們的shell指令碼學習就到這裡,後面還有一些內容一些運算子,還有字串等等東西。


Follow me---快速入門shell指令碼編寫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.