<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 閱讀(201) 評論(0)  編輯  收藏 所屬分類: Linux

    主站蜘蛛池模板: 国产婷婷成人久久Av免费高清| 亚洲精品国产肉丝袜久久| 亚洲av日韩精品久久久久久a| 4444www免费看| 亚洲综合日韩中文字幕v在线| a级毛片视频免费观看| 亚洲精品无码久久久久sm| 亚洲黄色在线观看网站| 久久亚洲精品专区蓝色区| 最好2018中文免费视频| 久久99国产综合精品免费| 亚洲成在人天堂在线| 久草免费手机视频| 久久久无码精品亚洲日韩按摩| 免费A级毛片无码视频| 亚洲AV成人潮喷综合网| 亚洲酒色1314狠狠做| 免费福利视频导航| 亚洲AV日韩AV永久无码久久| 99久久人妻精品免费二区| 亚洲人成在线中文字幕| 日本无卡码免费一区二区三区| 看成年女人免费午夜视频| 亚洲人精品午夜射精日韩| 香蕉视频在线观看免费| 亚洲精品视频免费看| 亚洲中文无码卡通动漫野外 | 免费v片在线观看| 日日摸夜夜添夜夜免费视频| 国产又黄又爽又猛免费app| 亚洲av无码片在线播放| 男女一边摸一边做爽的免费视频 | 亚洲区日韩精品中文字幕| 亚洲av无码专区在线观看素人| 亚洲欧美一区二区三区日产| 免费人成网站7777视频| 久久久久免费精品国产小说| 亚洲最大无码中文字幕| 亚洲亚洲人成综合网络| 一二三四在线播放免费观看中文版视频 | 久久久久亚洲av无码专区喷水|