閱讀232 返回首頁    go 阿裏雲 go 技術社區[雲棲]


linux shell 編程

shell 編程

1.簡述

利用vi等文本編輯器編寫Shell腳本的格式是固定的,如下:

#!/bin/bash
#comments
Your commands go here 

首行中的符號#!告訴係統其後路徑所指定的程序bash即是解釋此腳本文件的Shell程序。

除第一行外,以#開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上",這個符號表明下一行與此行會合並為同一行。

2.變量

有環境變量、內部變量、用戶變量。

Shell Script是一種弱類型語言,使用變量的時候無需首先聲明其類型。

variable_name = variable_value

取值的時候要在變量名前加$,$variable_name可以在引號中使用,這一點和其他高級語言是明顯不同的。

特殊變量

$$
Shell本身的PID(ProcessID)
$!
Shell最後運行的後台Process的PID
$?
最後運行的命令的結束代碼(返回值)
$#
添加到Shell的參數個數
$0
Shell本身的文件名
$1~$n
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。

demo:

3.數字比較

-eq  equal

-ge greater or equal

-le less or equal

-ne not equal

-gt greater than

-lt less than

4.字符串比較

== 是否相等

 !=  是否不等
-n 長度是否大於0
-z 長度是否等於0

5.文件操作符

-d 是否為目錄

-f 是否為文件

-r 是否可讀

-w 是否可寫

-x 是否可執行

6.邏輯運算符

! 等價c語言 !

-a 等價c語言 &&

-o 等價c語言 ||

7.for語句

for current_variable

do

  statements

done

8.if語句

if [ expression ] ; then
statements
elif [ expression ] ; then
statements
else
statements
fi
說明:elif或else語句不是必需的。

9.case語句

 case str in
str1 | str2)
statements;;
str3|str4)
statements;;
*)
statements;;
esac

說明:*對應C語言的 default; ";;"對應C語言的break。

10. exit語句

 退出shell程序並返回一個值,方便被另一個shell調用並給出反饋。

11.函數

 func(){
statements
}


12. shell腳本中執行其他shell腳本

12.1 直接調用

如 /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh
運行的時候開一個sub-shell執行調用的腳本,sub-shell執行完畢後返回parent-shell。 sub-shell從parent-shell繼承環境變量,但是sub-shell中的環境變量不會帶回parent-shell。

12.2 exec

exec /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh
在當前shell下執行目標腳本,執行結束後,當前腳本中exec行之後的內容就不會再執行了。

12.3 source

source  /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh  或   .   /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh

source命令也稱為“點命令”,也就是一個點符號(.),是bash的內部命令。

讀取目標腳本裏麵的語句依次在當前shell裏麵執行,沒有建立新的子shell。那麼腳本裏麵所有新建、改變變量的語句都會保存在當前shell裏麵。

最後更新:2017-04-03 08:26:12

  上一篇:go Javac源碼簡單分析之Javac簡單介紹
  下一篇:go Visual Studio 2008項目中WinForm窗體圖標顯示為類圖標,隻能打開代碼而無法打開視圖問題解決