shell腳本(四)case流程控制和exit命令

exit命令

exit用來控制程序和表達式的流程,一般的編程語言中都會有一個exit函數,在Linuxshell中也屬存在的.

exit 0

exit status

status 用0-255之間的數字表示,返回狀態值的同時伴隨着腳本的退出(其實就是退出).

就是$? 的值可以使用echo 進行查詢

exit命令 在腳本中和在終端上是不一樣的.

實驗1-判斷從鍵盤輸入的值是否爲空


1,進入一個子shell,編輯一個文件.(預防執行exit的時候退出終端,所以先執行一個子shell)

[root@Cent65 ~]# bash
[root@Cent65 ~]# vim exit.sh

#!/bin/bash
echo "please enter a string :"
  read str1
if [ -z $str1 ]
then
     echo "what you enter is null"
   exit 1
fi

驗證腳本

我們先輸入一個值,可以看到我的退出狀態爲0 (腳本的變量值輸入不爲空),不會執行then中的語句

輸入一個空的字符串 則執行then後面的命令 同時退出 狀態爲1

image

繼續驗證:

將exit.sh腳本中的值改成255

image

image

在編寫腳本時可以自己設置退出的狀態值,不過特定的值都是有特定的意義的,不要亂用.


case語句結構

case語句爲多選擇語句。可以用case語句匹配一個值與一個模式,如果匹配成功,執行相匹配的命令。

case語句主要適用於,某個變量存在多種取值,需要對其中的每一種取值分別執行不同的命令序列

case分支語句的語法結構

case 變量名 in

         模式1)

                     命令序列

          模式二)

                     命令序列

;;

              ……

                 *

                   默認命令序列

exit

esac

注意事項:

取值後面必須爲單詞   in;

每一模式必須以右括號結束。

取值可以爲變量或常數。

這個esac 就是case的結束,像if...fi 一樣的,
注意commands  ;; 中的“;;”不能少掉。

匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。

取值將檢測匹配的每一個模式。一旦模式匹配,則執行完匹配模式相應命令後不再繼續其他模式。

如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。


image


實驗

編寫一個名爲untar.sh的腳本,用來解壓.tar.gz 和 .tar.bz2格式的歸檔文件

vim untar.sh

case $1 in
      *.tar.gz)
              tar zxf $1
;;
      *.tar.bz2)
              tar jxf $1
;;
      *)
         echo "error"
;;
esac

測試:

創建一個測試的.tar.gz文件

image

image

image











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章