1、shbang行 “shbang”行是腳本的第一行,它讓內核知道使用哪種shell來解釋腳本中的行,shbang行是由一個#!後面再加上shell的完整路徑組成的,在其後還可以再跟上各種選項用來控制shell的行爲:
- #!/bin/bash
2、註釋 註釋由一個符號#後面跟一些描述行的說明組成,它們可以從行的任意位置開始,到行的末尾結束:
- #!/bin/bash
- #example comment1
- #example comment2
- #example comment3
3、通配符 shell中有些字符具有特殊意義,它們被稱爲shell的元字符或者通配符,這些字符既不是數字也不是字母,如果*、?、[、]、<、>、2>、>>、|等,*、?、[、]符號通常用於文件名的擴展,而<、>、2>、>>、|這些符號則用於標準I/O的重定向和管道,爲了避免這些特殊字符被shell解釋,它們必須被應用:
- #!/bin/bash
- #example comment1
- #example comment2
- #example comment3
- rm *
- ls ??
- cat file[1-3]
- echo "how are your?"
4、顯示輸出 echo命令用於向屏幕顯示輸出信息,此時通配符必須使用反斜槓或者配對引號進行轉義:
- echo "how are you?"
5、局部變量 局部變量的作用域被限制在當前的shell(進程)中,當這個腳本執行結束後,就超出了局部變量的作用域,它們就不可以再使用了。shell內置的declare命令可以用來定義局部變量,可以創建局部變量併爲其賦值:
- variable_name=value
- declare variable_name=value
- name="john doe"
- x=5
6、全局變量 全局變量又稱爲環境變量,它們由內置的export命令創建。它們爲當前運行的shell(進程)以及由此shell(進程)派生的所有子進程創建,當腳本執行結束後,這些全局變量也超出作用域。帶-x選項的內置命令declare也用於設置環境變量,並且將其導出(export):
- export VARIABLE_NAME=value
- export PATH=/bin:/usr/bin:.
- declare -x VARIABLE_NAME=value
注意:在局部變量和全局變量定義、賦值時,變量名與賦值符號之間不能有空格,賦值符號與變量值之間也不能有空格:
variable_name=value 正確
variable_name = value 錯誤
variable_name =value 錯誤
variable_name= value 錯誤
7、提取變量值 使用美元符號$可以提取變量的值:
- echo $variable_name
- echo $name
- echo $PATH
8、讀取用戶輸入 shell可能會要求用戶輸入信息,read命令用於從用戶輸入中讀取一行,如果read命令有多個參數,則shell會將輸入的這一行分解爲多個單詞(word),每個單詞用於給一個變量賦值:
- echo "what is your name?"
- read name
- read name1 name2 name3
9、參數 可以在命令行中給腳本傳遞參數,在腳本中利用位置參數來獲取參數的值:
- $scriptname arg1 arg2 arg3
- echo $1 $2 $3
- echo $*
- echo $#
$1、$2、$3表示具體的位置參數
$*表示所有的位置參數
$#表示位置參數的個數
10、命令替換 Linux命令的輸出可以被賦值給一個變量,或者通過使用反引號引用命令,在字符串中使用該命令的輸出。在Bash shell中還提供了一種新的語法:不使用反引號,而是將命令包含在由美元符號開始的一對圓括號中即可。
- variable_name=`command`
- variable_name=$(command)
- echo $variable_name
- echo "today is `date`"
- echo "today is $(date)"
- <pre name="code" class="plain">liuwei@jupiter:~$ echo "today is `date`"
- today is Thu Jul 28 20:47:46 CST 2011
- liuwei@jupiter:~$ echo "today is $(date)"
- today is Thu Jul 28 20:48:00 CST 2011
- liuwei@jupiter:~$ echo "today is $( date )"
- today is Thu Jul 28 20:48:18 CST 2011</pre>
注意$()中的空格,是允許的。
11、數組
12、運算符
13、算術運算
14、條件語句
15、循環語句
16、函數
文章轉自:http://blog.csdn.net/xiruanliuwei/article/details/6641971