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


BASH SHELL快速入門

BASH BASH的基本語法
最簡單的例子——HelloWorld!
關於輸入、輸出和錯誤輸出
BASH中對變量的規定(與C語言的異同)
BASH中的基本流程控製語法
函數的使用
2.1 最簡單的例子——HelloWorld!
幾乎所有的講解編程的書給讀者的第一個例子都是HelloWorld程序,那麼我們今天也就從
這個例子出發,來逐步了解BASH。
用vi 編輯器編輯一個hello文件如下:
#!/bin/bash
#Thisisaverysimpleexample
echoHelloWorld
這樣最簡單的一個BASH程序就編寫完了。這裏有幾個問題需要說明一下:
一,第一行的#! 是什麼意思
二,第一行的/bin/bash 又是什麼意思
三,第二行是注釋嗎
四,echo 語句
五,如何執行該程序
#! 是說明hello這個文件的類型的,有點類似於Windows係統下用不同文件後綴來表示
不同文件類型的意思(但不相同)。Linux 係統根據"#!" 及該字串後麵的信息確定該文件的
類型,關於這一問題同學們回去以後可以通過"manmagic"命令及/usr/share/magic 文件
來了解這方麵的更多內容。在BASH中第一行的"#!" 及後麵的"/bin/bash" 就表明該文
件是一個BASH程序,需要由/bin 目錄下的bash程序來解釋執行。BASH這個程序一般
是存放在/bin 目錄下,如果你的Linux 係統比較特別,bash 也有可能被存放在/sbin 、
/usr/local/bin 、/usr/bin 、/usr/sbin 或/usr/local/sbin 這樣的目錄下;如果還找不到,你可
以用"locatebash""find/-namebash2>/dev/null" 或"whereisbash" 這三個命令找出bash
所在的位置;如果仍然找不到,那你可能需要自己動手安裝一個BASH軟件包了。
第二行的"#Thisisa..." 就是BASH程序的注釋,在BASH程序中從“#”號(注意:後麵
緊接著是“!”號的除外)開始到行尾的多有部分均被看作是程序的注釋。的三行的echo 語
句的功能是把echo 後麵的字符串輸出到標準輸出中去。由於echo 後跟的是"Hello
World"這個字符串,因此"HelloWorld"這個字串就被顯示在控製台終端的屏幕上了。需要
注意的是BASH中的絕大多數語句結尾處都沒有分號。
如何執行該程序呢?有兩種方法:一種是顯式製定BASH去執行:
$bashhello或
$shhello (這裏sh 是指向bash 的一個鏈接,“lrwxrwxrwx 1rootroot 4Aug2005:41
/bin/sh->bash”)
或者可以先將hello文件改為可以執行的文件,然後直接運行它,此時由於hello文件第一
行的"#!/bin/bash" 的作用,係統會自動用/bin/bash 程序去解釋執行hello文件的:
$chmodu+xhello
$./hello
此處沒有直接“$hello”是因為當前目錄不是當前用戶可執行文件的默認目錄,而將當前
目錄“.”設為默認目錄是一個不安全的設置。
需要注意的是,BASH程序被執行後,實際上Linux 係統是另外開設了一個進程來運行的。
2.2 關於輸入、輸出和錯誤輸出
在字符終端環境中,標準輸入/標準輸出的概念很好理解。輸入即指對一個應用程序或命令
的輸入,無論是從鍵盤輸入還是從別的文件輸入;輸出即指應用程序或命令產生的一些信息;
與Windows係統下不同的是,Linux 係統下還有一個標準錯誤輸出的概念,這個概念主要
是為程序調試和係統維護目的而設置的,錯誤輸出於標準輸出分開可以讓一些高級的錯誤信
息不幹擾正常的輸出信息,從而方便一般用戶的使用。
在Linux 係統中:標準輸入(stdin)默認為鍵盤輸入;標準輸出(stdout)默認為屏幕輸出;標準
錯誤輸出(stderr)默認也是輸出到屏幕(上麵的std 表示standard)。在BASH中使用這些概
念時一般將標準輸出表示為1,將標準錯誤輸出表示為2。下麵我們舉例來說明如何使用他
們,特別是標準輸出和標準錯誤輸出。
輸入、輸出及標準錯誤輸出主要用於I/O 的重定向,就是說需要改變他們的默認設置。先
看這個例子:
$ls>ls_result
$ls-l>>ls_result
上麵這兩個命令分別將ls 命令的結果輸出重定向到ls_result 文件中和追加到ls_result 文
件中,而不是輸出到屏幕上。">"就是輸出(標準輸出和標準錯誤輸出)重定向的代表符號,
連續兩個">" 符號,即">>" 則表示不清除原來的而追加輸出。下麵再來看一個稍微複雜
的例子:
$find/home-namelost*2>err_result
這個命令在">" 符號之前多了一個"2","2>" 表示將標準錯誤輸出重定向。由於/home 目
錄下有些目錄由於權限限製不能訪問,因此會產生一些標準錯誤輸出被存放在err_result 文
件中。大家可以設想一下find/home-namelost*2>>err_result 命令會產生什麼結果?
如果直接執行find/home-namelost*>all_result ,其結果是隻有標準輸出被存入all_result
文件中,要想讓標準錯誤輸出和標準輸入一樣都被存入到文件中,那該怎麼辦呢?看下麵這
個例子:
$find/home-namelost*>all_result2>&1
上麵這個例子中將首先將標準錯誤輸出也重定向到標準輸出中,再將標準輸出重定向到
all_result 這個文件中。這樣我們就可以將所有的輸出都存儲到文件中了。為實現上述功能,
還有一種簡便的寫法如下:
$find/home-namelost*>&all_result
如果那些出錯信息並不重要,下麵這個命令可以讓你避開眾多無用出錯信息的幹擾:
$find/home-namelost*2>/dev/null
同學們回去後還可以再試驗一下如下幾種重定向方式,看看會出什麼結果,為什麼?
$find/home-namelost*>all_result1>&2
$find/home-namelost*2>all_result1>&2
$find/home-namelost*2>&1>all_result
另外一個非常有用的重定向操作符是"-",請看下麵這個例子:
$(cd/source/directory&&tarcf-.)|(cd/dest/directory&&tarxvfp-)
該命令表示把/source/directory 目錄下的所有文件通過壓縮和解壓,快速的全部移動到
/dest/directory 目錄下去,這個命令在/source/directory 和/dest/directory 不處在同一個文
件係統下時將顯示出特別的優勢。
下麵還幾種不常見的用法:
n<&- 表示將n號輸入關閉
<&- 表示關閉標準輸入(鍵盤)
n>&- 表示將n號輸出關閉
>&- 表示將標準輸出關閉
2.3 BASH中對變量的規定(與C語言的異同)
好了下麵我們進入正題,先看看BASH中的變量是如何定義和使用的。對於熟悉C 語言的
程序員,我們將解釋BASH中的定義和用法與C語言中有何不同。
2.3.1.BASH中的變量介紹
我們先來從整體上把握一下BASH中變量的用法,然後再去分析BASH中變量使用與C語
言中的不同。BASH中的變量都是不能含有保留字,不能含有"-" 等保留字符,也不能含有
空格。
2.3.1.1 簡單變量
在BASH中變量定義是不需要的,沒有"inti" 這樣的定義過程。如果想用一個變量,隻要
他沒有在前麵被定義過,就直接可以用,當然你使用該變量的第一條語句應該是對他賦初值
了,如果你不賦初值也沒關係,隻不過該變量是空(注意:是NULL,不是0)。不給變
量賦初值雖然語法上不反對,但不是一個好的編程習慣。好了我們看看下麵的例子:
首先用vi 編輯下麵這個文件hello2:
[root@localhost~]#cattest.sh
#!/bin/bash
#givetheinitializevaluetoSTR
STR="HelloWorld"
echo$STR
[root@localhost~]#./test.sh
HelloWorld
在上麵這個程序中我們需要注意下麵幾點:
一,變量賦值時,'='左右兩邊都不能有空格;
二,BASH中的語句結尾不需要分號(";");
三,除了在變量賦值和在FOR循環語句頭中,BASH中的變量使用必須在變量前加"$"符號,
同學們可以將上麵程序中第三行改為"echoSTR" 再試試,看看會出什麼結果。==>output:
STR
四,由於BASH程序是在一個新的進程中運行的,所以該程序中的變量定義和賦值不會改
變其他進程或原始Shell 中同名變量的值,也不會影響他們的運行。
更細致的文檔甚至提到以但引號括起來的變量將不被BASH解釋為變量,如'$STR' ,而被
看成為純粹的字符串。而且更為標準的變量引用方式是${STR}這樣的,$STR 自不過是對
${STR}的一種簡化。在複雜情況下(即有可能產生歧義的地方)最好用帶{} 的表示方式。
BASH中的變量既然不需要定義,也就沒有類型一說,一個變量即可以被定義為一個字符串,
也可以被再定義為整數。如果對該變量進行整數運算,他就被解釋為整數;如果對他進行字
符串操作,他就被看作為一個字符串。請看下麵的例子:
[root@localhost~]#cattest.sh
#!/bin/bash
x=1999
let"x=$x+1"
echo$x
x="olympic'"$x
echo$x
[root@localhost~]#./test.sh
2000
olympic'2000
關於整數變量計算,有如下幾種:"+-*/%",他們的意思和字麵意思相同。整數運算一般
通過let 和expr 這兩個指令來實現,如對變量x 加1 可以寫作:let "x=$x+1" 或者
x=`expr$x+1`
在比較操作上,整數變量和字符串變量各不相同,詳見下表:對應的操作 整 數 操 作
字符串操作
相同 -eq =
不同 -ne !=
大於 -gt >
小於 -lt <
大於或等於-ge
小於或等於-le
為空
-z
不為空
-n
比如:
比較字符串a 和b是否相等就寫作:if[$a=$b]
判斷字符串a 是否為空就寫作:if[-z$a]
判斷整數變量a 是否大於b就寫作:if[$a-gt$b]
更細致的文檔推薦在字符串比較時盡量不要使用-n ,而用!-z 來代替。(其中符號"!" 表
示求反操作)
BASH中的變量除了用於對整數和字符串進行操作以外,另一個作用是作為文件變量。
BASH是Linux 操作係統的Shell,因此係統的文件必然是BASH需要操作的重要對象,如if
[-x/root] 可以用於判斷/root 目錄是否可以被當前用戶進入。下表列出了BASH中用於判
斷文件屬性的操作符:運算符含義(滿足下麵要求時返回TRUE)
-efile 文件file 已經存在
-ffile 文件file 是普通文件
-sfile 文件file 大小不為零
-dfile 文件file 是一個目錄
-rfile 文件file 對當前用戶可以讀取
-wfile 文件file 對當前用戶可以寫入
-xfile 文件file 對當前用戶可以執行
-gfile 文件file 的GID標誌被設置
-ufile 文件file 的UID標誌被設置
-Ofile 文件file 是屬於當前用戶的
-Gfile 文件file 的組ID 和當前用戶相同
file1-ntfile2 文件file1 比file2 更新
file1-otfile2 文件file1 比file2 更老
注意:上表中的file 及file1、file2 都是指某個文件或目錄的路徑。
2.3.1.1.關於局部變量
在BASH程序中如果一個變量被使用了,那麼直到該程序的結尾,該變量都一直有效。為
了使得某個變量存在於一個局部程序塊中,就引入了局部變量的概念。BASH中,在變量首
次被賦初值時加上local 關鍵字就可以聲明一個局部變量,如下麵這個例子:
#!/bin/bash
HELLO=Hello
functionhello{
localHELLO=World
echo$HELLO
}
echo$HELLO
hello
echo$HELLO
該程序的執行結果是:
Hello
World
Hello
這個執行結果表明全局變量$HELLO的值在執行函數hello時並沒有被改變。也就是說局
部變量$HELLO的影響隻存在於函數那個程序塊中。
2.3.2.BASH中的變量與C語言中變量的區別
這裏我們為原來不熟悉BASH編程,但是非常熟悉C語言的程序員總結一下在BASH環境
中使用變量需要注意的問題。
1,BASH中的變量在引用時都需要在變量前加上"$" 符號(第一次賦值及在For循環的頭
部不用加"$"符號);
2,BASH中沒有浮點運算,因此也就沒有浮點類型的變量可用;
3,BASH中的整形變量的比較符號與C語言中完全不同,而且整形變量的算術運算也需要
經過let 或expr 語句來處理;
2.4 BASH中的基本流程控製語法
BASH中幾乎含有C語言中常用的所有控製結構,如條件分支、循環等,下麵逐一介紹。
2.4.1 2.4.1if...then...else
if 語句用於判斷和分支,其語法規則和C 語言的if 非常相似。其幾種基本結構為:
if[expression]
then
statments
fi
或者
if[expression]
then
statments
else
statments
fi
或者
if[expression]
then
statments
elseif[expression]
then
statments
else
statments
fi
或者
if[expression]
then
statments
elif[expression]
then
statments
else
statments
fi
值得說明的是如果你將if 和then 簡潔的寫在一行裏麵,就必須在then 前麵加上分號,
如:if[expression];then... 。下麵這個例子說明了如何使用if 條件判斷語句:
#!/bin/bash
if[$1-gt90]
then
echo"Good,$1"
elif[$1-gt70]
then
echo"OK,$1"
else
echo"Bad,$1"
fi
exit0
上麵例子中的$1是指命令行的第一個參數,這個會在後麵的“BASH中的特殊保留字”中
講解。
2.4.2for
for 循環結構與C語言中有所不同,在BASH中for 循環的基本結構是:
for$varin
do
statments
done
其中$var是循環控製變量,
是$var需要遍曆的一個集合,do/done 對包含了循環體,相當於C語言中的一對大括號。
另外如果do和for 被寫在同一行,必須在do前麵加上";"。如:for$varin
;do 。下麵是一個運用for 進行循環的例子:
[root@localhost~]#cattest1.sh
#!/bin/bash
fordayinSunMonTueWedThuFriSat
do
echo$day
done
[root@localhost [root@localhost~]#./test1.sh
Sun
Mon
Tue
Wed
Thu
Fri
Sat
# 如果列表被包含在一對雙引號中,則被認為是一個元素
[root@localhost~]#cattest1.sh
#!/bin/bash
fordayin"SunMonTueWedThuFriSat"
do
echo$day
done
exit0
[root@localhost~]#./test1.sh
SunMonTueWedThuFriSat
注意上麵的例子中,在for 所在那行的變量day是沒有加"$" 符號的,而在循環體內,echo
所在行變量$day是必須加上"$" 符號的。另外如果寫成forday而沒有後麵的in
部分,則day將取遍命令行的所有參數。如這個程序:
#!/bin/bash
forparam
do
echo$param
done
exit0
上麵這個程序將列出所有命令行參數。for 循環結構的循環體被包含在do/done 對中,這
也是後麵的while、until循環所具有的特點。
2.4.3while
while循環的基本結構是:
while[condition]
do
statments
done
這個結構請大家自己編寫一個例子來驗證。
2.4.4until
until循環的基本結構是:
until[conditionisTRUE]
do
statments
done
這個結構也請大家自己編寫一個例子來驗證。
2.4.5case
BASH中的case 結構與C 語言中的switch 語句的功能比較類似,可以用於進行多項分支
控製。其基本結構是:
case"$var"in
condition1)
statments1;;
condition2)
statments2;;
...
*)
defaultstatments;;
esac
下麵這個程序是運用case 結構進行分支執行的例子:
[root@localhost~]#catcase.sh
#!/bin/bash
echo"Hitakey,thenhitreturn."
readKeypress
case"$Keypress"in
[a-z])echo"Lowercaseletter";;
[A-Z])echo"Uppercaseletter";;
[0-9])echo"Digit";;
*)echo"Punctuation,whitespace,orother";;
esac
exit0
[root@localhost~]#./case.sh
Hitakey,thenhitreturn.
r
Lowercaseletter
[root@localhost~]#./case.sh
Hitakey,thenhitreturn.
T
Lowercaseletter
[root@localhost~]#./case.sh
Hitakey,thenhitreturn.
2
Digit
上麵例子中的第四行"readKeypress" 一句中的read 語句表示從鍵盤上讀取輸入。這個命
令將在本講義的BASH的其他高級問題中講解。
2.4.6break/continue
熟悉C 語言編程的都很熟悉break 語句和continue 語句。BASH中同樣有這兩條語句,
而且作用和用法也和C語言中相同,break 語句可以讓程序流程從當前循環體中完全跳出,
而continue 語句可以跳過當次循環的剩餘部分並直接進入下一次循環。
2.5 函數的使用
BASH是一個相對簡單的腳本語言,不過為了方便結構化的設計,BASH中也提供了函數定
義的功能。BASH中的函數定義很簡單,隻要向下麵這樣寫就可以了:
functionmy_funcname{
codeblock
}
或者
my_funcname(){
codeblock
}
上麵的第二種寫法更接近於C語言中的寫法。BASH中要求函數的定義必須在函數使用之
前,這是和C語言用頭文件說明函數方法的不同。
更進一步的問題是如何給函數傳遞參數和獲得返回值。BASH中函數參數的定義並不需要在
函數定義處就製定,而隻需要在函數被調用時用BASH的保留變量$1$2... 來引用就可以
了;BASH的返回值可以用return 語句來指定返回一個特定的整數,如果沒有return 語句
顯式的返回一個返回值,則返回值就是該函數最後一條語句執行的結果(一般為0,如果執
行失敗返回錯誤碼)。函數的返回值在調用該函數的程序體中通過$?保留字來獲得。下麵
我們就來看一個用函數來計算整數平方的例子:
#!/bin/bash
square(){
let"res=$1*$1"
return$res
}
square$1
result=$?
echo$result
exit0
BASH中的特殊保留字
保留變量
隨機數
運算符
變量的特殊操作
3.1 3.1 保留變量
BASH中有一些保留變量,下麵列出了一些:
$IFS 這個變量中保存了用於分割輸入參數的分割字符,默認識空格。
$HOME 這個變量中存儲了當前用戶的根目錄路徑。
$PATH 這個變量中存儲了當前Shell 的默認路徑字符串。
$PS1 表示第一個係統提示符。
$PS2 表示的二個係統提示符。
$PWD 表示當前工作路徑。
$EDITOR表示係統的默認編輯器名稱。
$BASH 表示當前Shell 的路徑字符串。
$0,$1,$2,...
表示係統傳給腳本程序或腳本程序傳給函數的第0個、第一個、第二個等參數。
$# 表示腳本程序的命令參數個數或函數的參數個數。
$$ 表示該腳本程序的進程號,常用於生成文件名唯一的臨時文件。
$? 表示腳本程序或函數的返回狀態值,正常為0,否則為非零的錯誤號。
$* 表示所有的腳本參數或函數參數。
$@ 和$*涵義相似,但是比$*更安全。
$! 表示最近一個在後台運行的進程的進程號。
3.2 隨機數
隨機數是經常要用到的,BASH中也提供了這個功能,請看下麵這個程序:
#!/bin/bash
#Printsdifferentrandomintegerfrom1to65536
a=$RANDOM
echo$a
exit0
這個程序可以在每次執行的時候隨機的打印出一個大小在1到65536之間的整數。
3.3 3.3 運算符
算術運算符
+-*/%表示加減乘除和取餘運算
+=-=*=/= 同C 語言中的含義
位操作符
<<<<=>>>>= 表示位左右移一位操作
&&=||= 表示按位與、位或操作
~! 表示非操作
^^= 表示異或操作
關係運算符
<><=>===!= 表示大於、小於、大於等於、小於等於、等於、不等於操作
&&|| 邏輯與、邏輯或操作
3.4 變量的特殊操作
BASH中還有一些對變量的簡潔、快速的操作,大家還記得"${var}" 和"$var" 同樣是對變
量的引用吧,對${var}進行一些變化就可以產生一些新功能:
${var-default}表示如果變量$var還沒有設置,則保持$var沒有設置的狀態,並返回後麵
的默認值default。
${var=default}表示如果變量$var還沒有設置,則取後麵的默認值default。
${var+otherwise}表示如果變量$var已經設置,則返回otherwise 的值,否則返回空(null)。
${var?err_msg}表示如果變量$var已經設置,則返回該變量的值,否則將後麵的err_msg
輸出到標準錯誤輸出上。
請同學們自己嚐試下麵的例子:
#!/bin/bash
echo${var?Thereisanerror}
exit0
還有下麵一些用法,這些用法主要用於從文件路徑字符串中提取有用信息:
${var#pattern},${var##pattern} 用於從變量$var中剝去最短(最長)的和pattern 相匹配
的最左側的串。
${var%pattern},${var%%pattern}用於從變量$var中剝去最短(最長)的和pattern相匹配
的最右側的串。
另外BASH2 中還加入下麵一些操作:
${var:pos}表示去掉變量$var中前pos 個字符。
${var:pos:len}表示變量$var中去掉前pos個字符後的剩餘字符串的前len 個字符。
${var/pattern/replacement} 表示將變量$var 中第一個出現的pattern 模式替換為
replacement 字符串。
${var//pattern/replacement} 表示將變量$var 中出現的所有pattern 模式全部都替換為
replacment 字符串。
BASH中的其他高級問題
BASH中對返回值的處理
用BASH設計簡單用戶界麵
在BASH中讀取用戶輸入
一些特殊的慣用法
BASH程序的調試
關於BASH2
4.1 BASH中對返回值的處理
無論是在Shell 中對BASH腳本返回值的處理,還是在腳本中對函數返回值的處理,都是
通過"$?" 係統變量來獲得。BASH要求返回值必須為一個整數,不能用return 語句返回字
符串變量。
4.2 用BASH設計簡單用戶界麵
BASH中提供了一個小的語句格式,可以讓程序快速的設計出一個字符界麵的用戶交互選擇
的菜單,該功能就是由select 語句來實現的,select 語句的語法為:
selectvarin
do
statmentsuse$var
done
上麵的語法結構在執行後,BASH會將
中的所有項加上數字列在屏幕上等待用戶選擇,在用戶作出選擇後,變量$var中就包含了
那個被選中的字符串,然後就可以對該變量進行需要的操作了。我們可以從下麵的例子中更
直觀的來理解這個功能:
[root@localhost~]#catselect.sh
#!/bin/bash
OPTIONS="HelloQuit"
selectoptin$OPTIONS;do
if["$opt"="Quit"];then
echodone
exit
elif["$opt"="Hello"];then
echoHelloWorld
else
clear
echobadoption
fi
done
exit0
[root@localhost~]#./select.sh
1)Hello
2)Quit
#?1
HelloWorld
#?1
HelloWorld
#?2
done
大家可以試著執行上麵的程序,看看是什麼執行結果。
4.3 4.3 在BASH中讀取用戶輸入
BASH中通過read 函數來實現讀取用戶輸入的功能,如下麵這段程序:
#!/bin/bash
echoPleaseenteryourname
readNAME
echo"Hi!$NAME!"
exit0
上麵這個腳本讀取用戶的輸入,並回顯在屏幕上。
另外BASH中還提供另外一種稱為heredocuments的結構????,可以將用戶需要通過鍵盤
輸入的字符串改為從程序體中直接讀入,如密碼。下麵的小程序演示了這個功能:
#!/bin/bash
passwd="aka@tsinghua"
ftp-nlocalhost <<FTPFTP
useranonymous$passwd
binary
bye
FTPFTP
exit0
這個程序在用戶需要通過鍵盤敲入一些字符時,通過程序內部的動作來模擬鍵盤輸入。請注
意heredocuments的基本結構為:
command<<SOMESPECIALSTRING
statments
...
SOMESPECIALSTRING
這裏要求在需要鍵盤輸入的命令後,直接加上<<符號,然後跟上一個特別的字符串,在該
串後按順序輸入本來應該由鍵盤輸入的所有字符,在所有需要輸入的字符都結束後,重複一
遍前麵<<符號後的“特別的字符串”即表示該輸入到此結束。
4.4 4.4一些特殊的慣用法
在BASH中() 一對括號一般被用於求取括號中表達式的值或命令的執行結果,如:(a=hello;
echo$a),其作用相當於`...` 。
: 有兩個含義,一是表示空語句,有點類似於C語言中的單個";" 。表示該行是一個空命
令,如果被用在while/until的頭結構中,則表示值0,會使循環一直進行下去,如下例:
while:
do
operation-1
operation-2
...
operation-n
done
另外: 還可以用於求取後麵變量的值,比如:
#!/bin/bash
:${HOSTNAME?}{USER?}{MAIL?}
echo$HOSTNAME
echo$USER
echo$MAIL
exit0
在BASH中export 命令用於將係統變量輸出到外層的Shell 中了。
4.5BASH程序的調試
用bash-xbash-script 命令,可以查看一個出錯的BASH腳本到底錯在什麼地方,可以幫助
程序員找出腳本中的錯誤。
另外用trap 語句可以在BASH腳本出錯退出時打印出一些變量的值,以供程序員檢查。trap
語句必須作為繼"#!/bin/bash" 後的第一句非注釋代碼,一般trap 命令被寫作:trap
'message $checkvar1$checkvar2'EXIT 。
4.6關於BASH2
使用bash-version 命令可以看出當前你正在使用的BASH是什麼版本,一般版本號為1.14
或其他版本。而現在機器上一般還安裝了一個版本號為2.0 的BASH。該BASH也在/bin
目錄下。BASH2提供了一些新功能,有興趣的同敘可以自己去看相關資料,或直接man
bash2即可。
=======================

最後更新:2017-04-03 15:21:43

  上一篇:go TDD測試驅動的javascript開發(3) ------ javascript的繼承
  下一篇:go C# 數據庫dataGridView刷新數據和主外鍵判斷