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

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

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

    so true

    心懷未來(lái),開(kāi)創(chuàng)未來(lái)!
    隨筆 - 160, 文章 - 0, 評(píng)論 - 40, 引用 - 0
    數(shù)據(jù)加載中……

    bash使用getopt解析長(zhǎng)短參數(shù)

    #!/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表示短選項(xiàng),兩個(gè)冒號(hào)表示該選項(xiàng)有一個(gè)可選參數(shù),可選參數(shù)必須緊貼選項(xiàng)
    #如-carg 而不能是-c arg
    #--long表示長(zhǎng)選項(xiàng)
    #"$@"在上面解釋過(guò)
    # -n:出錯(cuò)時(shí)的信息
    # -- :舉一個(gè)例子比較好理解:
    #我們要?jiǎng)?chuàng)建一個(gè)名字為 "-f"的目錄你會(huì)怎么辦?
    # mkdir -f #不成功,因?yàn)?f會(huì)被mkdir當(dāng)作選項(xiàng)來(lái)解析,這時(shí)就可以使用
    # mkdir -- -f 這樣-f就不會(huì)被作為選項(xiàng)。
    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 會(huì)重新排列參數(shù)的順序,也就是改變$1,$2...$n的值,這些值在getopt中重新排列過(guò)了
    eval set -- "$TEMP" #必須用eval
    echo "\$#: $#"
    for i in "$@"; do
        echo "{$i}"
    done
    #經(jīng)過(guò)getopt的處理,下面處理具體選項(xiàng)。
    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 閱讀(509) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Linux

    主站蜘蛛池模板: 在线观看永久免费视频网站| 国产AV无码专区亚洲精品| 一级毛片a免费播放王色电影| 日日噜噜噜噜夜夜爽亚洲精品| 久久免费视频99| 亚洲中文字幕久久精品蜜桃| 久久亚洲色一区二区三区| 91在线手机精品免费观看| 精品久久久久久亚洲综合网| 亚洲精品午夜无码电影网| 成人性生交大片免费看无遮挡| 一区二区三区在线观看免费| 亚洲电影在线播放| 亚洲国产午夜中文字幕精品黄网站 | 性感美女视频免费网站午夜| 免费国产黄网站在线观看动图| 久久精品亚洲综合一品| 日韩一区二区免费视频| 97人妻精品全国免费视频| 亚洲日韩AV一区二区三区中文| 亚洲乱码中文字幕综合| 免费激情视频网站| 18未年禁止免费观看| 成人一级免费视频| 亚洲av片不卡无码久久| 亚洲女久久久噜噜噜熟女| 日本xxwwxxww在线视频免费| 99视频在线免费| www成人免费观看网站| 亚洲午夜无码久久| 亚洲第一永久在线观看| 亚洲日本一区二区三区在线| 日本黄页网站免费| 18国产精品白浆在线观看免费| 国产中文字幕在线免费观看 | 蜜臀AV免费一区二区三区| 久久国产精品免费| 免费夜色污私人影院网站电影| 国产精品亚洲片在线va| 亚洲美女一区二区三区| 亚洲AV无码国产精品麻豆天美|