1. 程式人生 > >腳本中如何加入選項

腳本中如何加入選項

case term 什麽 false list text 腳本選項 not 簡單

腳本選項--我們在執行命令時,後邊可以跟許多的選項和參數,那麽在創建腳本的時候是否也可以在腳本後邊跟上不同的選項而執行不同的功能?


目錄

  • 處理簡單的選項

  • 從參數中分離選項

  • 處理帶值的選項


一、處理簡單選項

先看下面的一個腳本:

#!/bin/bash
while [ -n "$1" ]
do
    case "$1" in
    -a) echo -a option ;;
    -b) echo -b option ;;
    -c) echo -c option ;;
    *) echo nothing ;;
    esac
    shift
done

由於shift移位命令,無論腳本後邊跟多少個選項,都將第一個參數的形式傳給腳本

,所以執行的效果如下:

技術分享圖片



二、從參數中分離選項

執行腳本的時候,有時候既需要選項,也需要參數,這就要把選項和參數區分開。

#!/bin/bash
while [ -n "$1" ]
do
    case "$1" in
    -a) echo -a option;;
    -b) echo -b option;;
    --) shift
        break;;
    *) echo nothing;;
    esac
    shift
done
for param in "$@"
do
    echo this param is "$param"
done

這個腳本中 -- 作為選項和參數的分割,為了避免shell把 -- 也當做參數來處理,需要在break前加shift把最後一個選項的值丟棄。執行效果如下:

技術分享圖片


三、處理帶值的選項

有些時候選項也是需要帶參數的,這需要讓腳本知道什麽選項後邊應該跟參數

#!/bin/bash
while [ -n "$1" ]
do
    case "$1" in
    -a) echo a option;;
    -b) param="$2"
        echo b option with $param
        shift;;
    --) shift
        break;;
    *) echo nothing;;
    esac
    shift
done
for param in "$@"
do
    echo this is $param
done

-b選項後邊需要跟參數賦值給$2,然後需要shift丟棄一個參數,執行效果如下:

技術分享圖片



腳本中如何加入選項