<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創未來!
    隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
    數據加載中……

    bash使用getopt解析長短參數

    #!/bin/bash
    # A small example program for using the new getopt(1) program.
    # This program will only work with bash(1)
    # An similar program using the tcsh(1) script language can be found
    # as parse.tcsh
    # Example input and output (from the bash prompt):
    # ./option_test.sh -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
    # Option a
    # Option c, no argument
    # Option c, argument `more'
    # Option b, argument ` very long '
    # Remaining arguments:
    # --> `par1'
    # --> `another arg'
    # --> `wow!*\?'
    # Note that we use `"$@"' to let each command-line parameter expand to a
    # separate word. The quotes around `$@' are essential!
    # We need TEMP as the `eval set --' would nuke the return value of getopt.
    #-o表示短選項,兩個冒號表示該選項有一個可選參數,可選參數必須緊貼選項
    #如-carg 而不能是-c arg
    #--long表示長選項
    #"$@"在上面解釋過
    # -n:出錯時的信息
    # -- :舉一個例子比較好理解:
    #我們要創建一個名字為 "-f"的目錄你會怎么辦?
    # mkdir -f #不成功,因為-f會被mkdir當作選項來解析,這時就可以使用
    # mkdir -- -f 這樣-f就不會被作為選項。
    TEMP=`getopt -o ab:c:: -l a-long,b-long:,c-long:: -n 'option_test.sh' -- "$@"`
    echo "TEMP:{$TEMP}"
    if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
    # Note the quotes around `$TEMP': they are essential!
    #set 會重新排列參數的順序,也就是改變$1,$2...$n的值,這些值在getopt中重新排列過了
    eval set -- "$TEMP" #必須用eval
    echo "\$#: $#"
    for i in "$@"; do
        echo "{$i}"
    done
    #經過getopt的處理,下面處理具體選項。
    while true ; do
            case "$1" in
                    -a|--a-long) echo "Option a" ; shift ;;
                    -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
                    -c|--c-long)
                            # c has an optional argument. As we are in quoted mode,
                            # an empty parameter will be generated if its optional
                            # argument is not found.
                            case "$2" in
                                    "") echo "Option c, no argument"; shift 2 ;;
                                    *)  echo "Option c, argument \`$2'" ; shift 2 ;;
                            esac ;;
                    --) shift ; break ;;
                    *) echo "Internal error!" ; exit 1 ;;
            esac
    done
    echo "Remaining arguments:"
    for arg do
       echo '--> '"\`$arg'" ;
    done

    ==================================================================================
    $ set -- a ' b '
    $ echo $#
    2
    $ a="a ' b '"
    $ set -- $a
    $ echo $#
    4
    $ set -- "$a"
    $ echo $#
    1

    posted on 2013-07-11 11:27 so true 閱讀(521) 評論(0)  編輯  收藏 所屬分類: Linux

    主站蜘蛛池模板: 相泽南亚洲一区二区在线播放| 毛茸茸bbw亚洲人| 国产三级在线观看免费| 久久久国产精品亚洲一区| 国产亚洲精品自在久久| 亚洲阿v天堂在线| 亚洲色大成网站WWW久久九九| 亚洲最大激情中文字幕| 亚洲精品二区国产综合野狼 | 国产精品无码免费专区午夜| 美女隐私免费视频看| 日本视频免费观看| 人妻免费久久久久久久了| 国产va免费观看| 色www永久免费| 182tv免费视频在线观看| 免费91麻豆精品国产自产在线观看| 国内少妇偷人精品视频免费| 久久久久国色av免费看| 老妇激情毛片免费| 一个人看的免费观看日本视频www| 亚洲精品黄色视频在线观看免费资源 | 日亚毛片免费乱码不卡一区| 四虎影视永久在线精品免费| 国产午夜精品理论片免费观看| 免费91最新地址永久入口| 57pao国产成视频免费播放| 中国在线观看免费国语版| 国产精品久久免费视频| 亚洲精品线路一在线观看| 国产精品亚洲精品日韩已满| 激情内射亚洲一区二区三区| 日韩亚洲不卡在线视频中文字幕在线观看 | 久久国产乱子伦精品免费一| 国产四虎免费精品视频| 色www永久免费视频| 国内精品久久久久久久亚洲| 亚洲综合自拍成人| 亚洲狠狠婷婷综合久久| 好男人资源在线WWW免费| 亚洲免费中文字幕|