SHELL編程一二三

     在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編程語言

編寫完wq保存退出。
#chmod  +x  qiuhe.sh  (添加可執行權限)

幾種關係運算符附圖參考:

具體執行腳本時,可使用以下兩種方法,附圖參考
 
 
這個求和也能夠經過一句話來實現
#echo |awk '{for (i=1;i<=100;i=i+1) a=a+i} { print a}'
 
 
2、SHELL中常見命令和流程控制
 一、在shell腳本中使用的常見命令
 經常使用命令語法及功能

  echo "some text": 將文字內容打印在屏幕上

  ls: 文檔列表

  wc –l filewc -w filewc -c file: 計算文檔行數計算文檔中的單詞數計算文檔中的字符數

  cp sourcefile destfile: 文檔拷貝

  mv oldname newname : 重命名文檔或移動文檔

  rm file: 刪除文檔

  grep 'pattern' file: 在文檔內搜索字符串   好比:grep 'aaa' file.txt
 
        Sed是個基本的查找替換程式。 awk 用來從文本文檔中提取字段。具體使用可參見相關資料,在此不展開了。
 
二、SHELL的流程控制
      和其餘高級程序設計語言同樣,Shell提供了用來控制程序執行流程的命令,包括條件分支和循環結構,用戶能夠用這些命令建立很是複雜的程序。
   if條件語句:Shell程序中的條件分支是經過if條件語句來實現的,其通常格式爲:

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編程和調試有個基本的認識和了解。

相關文章
相關標籤/搜索