bash編譯之case和read

  bash的編程之case語句:用法格式

    case 變量引用(${}) in

     value1)

      語句1

      語句2

      ...

      ;;

     value2)

       語句1

       語句2

       ...

       ;;

     value3)

      語句1

      語句2

      ...

      ;;

     *)

      語句1

      語句2

      ...

      ;;

    esac

例:寫一個腳本,能接受參數gzip、bzip2或xz,而後能將/etc/目錄歸檔備份至/backup目錄,並以參數指定的形式壓縮存放;文件名稱包含腳本執行時刻的時間.    

    #!/bin/bash

    #

      Com=$1

    if [ -z $Com ]; then

      Com=gzip

    fi

      [ -d /backup ] || mkdir /backup

    case $Com in

    gzip)

      tar zcf /backup/etc-`date +%F-%H-%M-%S`.tar.gz /etc/*

      RetVal=$?

      ;;

    bzip2)

      tar jcf /backup/etc-`date +%F-%H-%M-%S`.tar.bz2 /etc/*

      RetVal=$?

      ;;

    xz)

      tar Jcf /backup/etc-`date +%F-%H-%M-%S`.tar.xz /etc/*

      RetVal=$?

      ;;

    *)

      echo "Usage: `basename $0` {[gzip|bzip2|xz]}"

      exit 6

      ;;

    esac

      [ $RetVal -eq 0 ] && echo "Backup etc finished.($Com)."

例:判斷當前Linux發行版是RedHat, Fedora, CentOS還是其它。方法:取得/etc/issue文件第一行的第一個單詞後進行比較.

     #!/bin/bash

     #

       Issue=`grep "$1" /etc/issue | cut -d' ' -f1`

     case $Issue in

     RedHat)

       echo "RedHat";;

     Fedora)

       echo "Fedora";;

     CentOS)

       echo "CentOS";;

     *)

       echo "{[RedHat|Fedora|Centos]}"

     exit 3

     ;;

     esac

bash內置命令read,可與用戶交互

    選項:

        -p "prompt":提示信息

        -t # 超時秒數

    例: 寫一個腳本

        1、顯示如下菜單給用戶:

            m|M) show memory usages;

            d|D) show disk usages;

            q|Q) quit

        2、如果用戶選擇了第一項,則顯示內存使用信息;

             如果選擇了第二項,則顯示磁盤掛載及使用相關信息;

             如果是第三項,退出,並顯示選擇退出;

             其它任何內容,均說明錯誤選項;

    #!/bin/bash

    #

    cat << EOF

    m|M) show memory usages;

    d|D) show disk usages;

    q|Q) quit

    EOF

    read -p "Your choice: " Choice

    case $Choice in

    m|M)

       free -m ;;

    d|D)

       df -lh ;;

    q|Q)

       echo "Quit..."

       exit 0

    ;;

    *)

       echo "Invalid input."

       exit 5

    ;;

    esac

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