在Linux系統中,shell是個很靈活的工具。Shell不可是命令的集合,並且是一個很好的編程語言。咱們能夠經過使用shell使大量的任務自動化,shell還特別擅長系統管理任務,尤爲適合那些易用性、可維護性和便捷性比效率更重要的一些任務。shell
Linux中有好多種不一樣的shell,可是一般咱們使用bash來進行shell編程。下面咱們首先來看一個SHELL小程序,經過分析來初步認識SHELL編程。
編程
shell腳本示例:(求1到100的和)小程序
#vi qiuhe.sh
#!/bin/sh # 符號#!用來告訴系統他後面的參數是用來執行該文檔的程式bash
a=1 #定義變量
sum=0
while [ $a -le 100 ] #while循環,其中-le的意思是小於或等於
do
((sum=sum+a))
((a=a+1))
done
echo $sum編程語言
if 條件命令串ide
then工具
條件爲真時的命令串spa
else命令行
條件爲假時的命令串設計
fi
for循環:for循環對一個變量的可能的值都執行一個命令序列。賦給變量的幾個數值既能夠在程序內以數值列表的形式提供,也能夠在程序之外以位置參數的形式提供。for循環的通常格式爲:
for變量名 [in數值列表]
do
若干個命令行
done
變量名能夠是用戶選擇的任何字串,若是變量名是var,則在in以後給出的數值將順序替換循環命令列表中的$var。若是省略了in,則變量var的取值將是位置參數。對變量的每個可能的賦值都將執行do和done之間的命令列表。
while和until循環:while和until命令都是用命令的返回狀態值來控制循環的。While循環的通常格式爲:
while
若干個命令行1
do
若干個命令行2
done
只要while的「若干個命令行1」中最後一個命令的返回狀態爲真,while循環就繼續執行do...done之間的「若干個命令行2」。
until命令是另外一種循環結構,它和while命令類似,其格式以下:
until
若干個命令行1
do
若干個命令行2
done
until循環和while循環的區別在於:while循環在條件爲真時繼續執行循環,而until則是在條件爲假時繼續執行循環。
3、SHELL程序的調試
在編程過程當中不免會出錯,有的時候,調試程序比編寫程序花費的時間還要多,shell程序一樣如此。
shell程序的調試主要是利用bash命令解釋程序的選擇項。調用bash的形式是:
bash(sh) -選擇項 shell程序文件名
幾個經常使用的選擇項是:
-e:若是一個命令失敗就當即退出
-n:讀入命令檢查語法是否有錯誤可是不執行它們
-u:置換時把未設置的變量看做出錯
-v:讀入shell輸入行並把它們顯示出來
-x:執行命令時把命令和它們的參數顯示出來
上面的全部選項也能夠在shell程序內部用「set -選擇項」的形式引用,而「set +選擇項」則將禁止該選擇項起做用。若是隻想對程序的某一部分使用某些選擇項時,則能夠將該部分用上面兩個語句包圍起來。
1.未置變量退出和當即退出
未置變量退出特性容許用戶對全部變量進行檢查,若是引用了一個未賦值的變量就終止shell程序的執行。shell一般容許未置變量的使用,在這種狀況下,變量的值爲空。若是設置了未置變量退出選擇項,則一旦使用了未置變量就顯示錯誤信息,並終止程序的運行。未置變量退出選擇項爲「-u」。
當shell運行時,若遇到不存在或不可執行的命令、重定向失敗或命令非正常結束等狀況時,若是未經從新定向,該出錯信息會打印在終端屏幕上,而shell程序仍將繼續執行。要想在錯誤發生時迫使shell程序當即結束,可使用「-e」選項將shell程序的執行當即終止。
2.shell程序的跟蹤
調試shell程序的主要方法是利用shell命令解釋程序的「-v」或「-x」選項來跟蹤程序的執行。「-v」選擇項使shell在執行程序的過程當中,把它讀入的每個命令行都顯示出來,而「-x」選擇項使shell在執行程序的過程當中把它執行的每個命令在行首用一個「+」加上命令名顯示出來。並把每個變量和該變量所取的值也顯示出來。
除了使用shell的「-v」和「-x」選擇項之外,還能夠在shell程序內部採起一些輔助調試的措施。例如,能夠在shell程序的一些關鍵地方使用echo命令把必要的信息顯示出來,它的做用至關於C語言中的printf語句,這樣就能夠知道程序運行到什麼地方及程序目前的狀態。
經過本文,但願你們對SHELL編程和調試有個基本的認識和了解。