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

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

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

    Chan Chen Coding...

    Passing arguments to a shell script

    Any shell script you run has access to (inherits) the environment variables accessible to its parent shell. In addition, any arguments you type after the script name on the shell command line are passed to the script as a series of variables.
    The following parameters are recognized:
    $*
    Returns a single string (``$1, $2 ... $n'') comprising all of the positional parameters separated by the internal field separator character (defined by the IFS environment variable).
    $@
    Returns a sequence of strings (``$1'', ``$2'', ... ``$n'') wherein each positional parameter remains separate from the others.
    $1, $2 ... $n
    Refers to a numbered argument to the script, where n is the position of the argument on the command line. In the Korn shell you can refer directly to arguments where n is greater than 9 using braces. For example, to refer to the 57th positional parameter, use the notation ${57}. In the other shells, to refer to parameters with numbers greater than 9, use the shift command; this shifts the parameter list to the left. $1 is lost, while $2 becomes $1, $3 becomes $2, and so on. The inaccessible tenth parameter becomes $9 and can then be referred to.
    $0
    Refers to the name of the script itself.
    $#
    Refers to the number of arguments specified on a command line.
    For example, create the following shell script called mytest:
       echo There are $# arguments to $0: $*    echo first argument: $1    echo second argument: $2    echo third argument: $3    echo here they are again: $@ 
    When the file is executed, you will see something like the following:
       $ mytest foo bar quux    
    There are 3 arguments to mytest: foo bar quux    
    first argument: foo    
    second argument: bar    
    third argument: quux    

    here they are again: foo bar quux 
    $# is expanded to the number of arguments to the script, while $* and $@ contain the entire argument list. Individual parameters are accessed via $0, which contains the name of the script, and variables $1 to $3 which contain the arguments to the script (from left to right along the command line).
    Although the output from $@ and $* appears to be the same, it may be handled differently, as $@ lists the positional parameters separately rather than concatenating them into a single string. Add the following to the end of mytest:
       function how_many {         
            print "$# arguments were supplied."    
        }    
    how_many "$*"    
    how_many "$@" 
    The following appears when you run mytest:
       $ mytest foo bar quux    
    There are 3 arguments to mytest: foo bar quux    
    first argument: foo    
    second argument: bar  
    third argument: quux    
    here they are again: foo bar quux    1 arguments were supplied.    3 arguments were supplied.


    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2012-02-29 21:58 Chan Chen 閱讀(195) 評論(0)  編輯  收藏 所屬分類: Linux

    主站蜘蛛池模板: 亚洲精品在线电影| 亚洲视频一区网站| 青青青视频免费观看| 久久精品国产亚洲AV大全| 免费精品久久天干天干| 亚洲综合网站色欲色欲| 在线观看人成视频免费无遮挡 | 亚洲熟伦熟女专区hd高清| 美女黄网站人色视频免费| 日本免费一区二区三区最新| 国产精品久久久亚洲| 黄色毛片视频免费| 黑人大战亚洲人精品一区 | 亚洲另类视频在线观看| 真人无码作爱免费视频| 三年片在线观看免费大全电影| 一区二区3区免费视频| 国产jizzjizz视频免费看| 亚洲视频一区在线| 青青久在线视频免费观看| 亚洲另类激情综合偷自拍| 精品免费人成视频app| 亚洲人成图片网站| 亚洲国产精品国产自在在线 | 黄色免费网址在线观看| 亚洲人成国产精品无码| 午夜免费啪视频在线观看| 一本色道久久88亚洲精品综合| 最近中文字幕大全免费版在线| 香蕉视频在线观看免费国产婷婷| 好爽…又高潮了免费毛片| 国产亚洲精品成人AA片| 亚洲 无码 在线 专区| 色天使亚洲综合在线观看| 亚洲第一永久AV网站久久精品男人的天堂AV | 久久精品无码专区免费青青| 天天爽亚洲中文字幕| 在线免费中文字幕| 亚洲国产成人精品激情| 亚洲天堂免费在线视频| 亚洲香蕉免费有线视频|