. Linux shell 腳本編寫基礎
◆1.1 語法基本介紹
1.1.1 開頭
程序必須以下面的行開始(必須方在文件的第一行):
#!/bin/sh
符號#!用來告訴系統它后面的參數是用來執行該文件的程序。在這個例子中我們使用/bin/sh來執行程序。
當編輯好腳本時,如果要執行該腳本,還必須使其可執行。
要使腳本可執行:
編譯 chmod +x filename 這樣才能用./filename 來運行
1.1.2 注釋
在進行shell編程時,以#開頭的句子表示注釋,直到這一行的結束。我們真誠地建議您在程序中使用注釋。
如果您使用了注釋,那么即使相當長的時間內沒有使用該腳本,您也能在很短的時間內明白該腳本的作用及工作原理。
1.1.3 變量
在其他編程語言中您必須使用變量。在shell編程中,所有的變量都由字符串組成,并且您不需要對變量進行聲明。要賦值給一個變量,您可以這樣寫:
復制代碼代碼如下:
#!/bin/sh
#對變量賦值:
a=”hello world”
# 現在打印變量a的內容:
echo “A is:”
echo $a
有時候變量名很容易與其他文字混淆,比如:
復制代碼代碼如下:
num=2
echo “this is the $numnd”
這并不會打印出“this is the 2nd”,而僅僅打印”this is the “,因為shell會去搜索變量numnd的值,但是這個變量時沒有值的??梢允褂没ɡㄌ杹砀嬖Vshell我們要打印的是num變量:
復制代碼代碼如下:
num=2
echo “this is the ${num}nd”
這將打?。?/span> this is the 2nd
1.1.4 環境變量
由export關鍵字處理過的變量叫做環境變量。我們不對環境變量進行討論,因為通常情況下僅僅在登錄腳本中使用環境變量。
這一講就介紹到這里,下面我們會接觸到具體的Linux shell腳本基礎的實質部分。
必須要要知道幾個變量,
復制代碼代碼如下:
* $0 :即命令本身,相當于c/c++中的argv[0]
* $1 :第一個參數.
* $2, $3, $4 … :第2、3、4個參數,依次類推。
* $# 參數的個數,不包括命令本身
* $@ :參數本身的列表,也不包括命令本身
* $* :和$@相同,但”$*” 和 “$@”(加引號)并不同,”$*”將所有的參數解釋成一個字符串,而”$@”是一個參數數組。
手工處理方式能滿足多數的簡單需求,配合shift使用也能構造出強大的功能,但處理復雜選項時建議用下面的兩種方法。
例子,(getargs.sh):
復制代碼代碼如下:
#!/bin/bash
if [ $# -lt 1 ]; then
echo “error.. need args”
exit 1
fi
echo “commond is $0”
echo “args are:”
for arg in “$@”
do
echo $arg
done
運行命令:
復制代碼代碼如下:
./getargs.sh 11 22 cc
commond is ./getargs.sh
args are:
11
22
cc
”>, >>, 2>, 2>>” :前面講過重定向符號> 以及>> 分別表示取代和追加的意思,然后還有兩個符號就是這里的2> 和 2>> 分別表示錯誤重定向和錯誤追加重定向,當我們運行一個命令報錯時,報錯信息會輸出到當前的屏幕,如果想重定向到一個文本里,則要用2>或者2>>。
“[ ] ”:中括號,中間為字符組合,代表中間字符中的任意一個
“&& 與 ||”
在上面剛剛提到了分號,用于多條命令間的分隔符。另外還有兩個可以用于多條命令中間的特殊符號,那就是 “&&”和”||”。下面筆者把這幾種情況全列出:
1) command1 ; command2
2) command1 && command2
3) command1 || command2
使用”;”時,不管command1是否執行成功都會執行command2; 使用”&&”時,只有command1執行成功后,command2才會執行,否則command2不執行;使用”||”時,command1執行成功后command2 不執行,否則去執行command2,總之command1和command2總有一條命令會執行。
原創文章,作者:linux-qiao,如若轉載,請注明出處:http://www.www58058.com/83818