• Bash中的位置参数和特殊参数


    #Bash中的位置参数和特殊参数

    #Bash中的位置参数是由0以外的一个或多个数字表示的参数。
    #位置参数是当Shell或Shell函数被引用时由Shell或Shell函数的参数赋值,并且可以使用Bash的内部命令set来重新赋值。位置参数N可以被引用为${N},或当N只含有一个数字时被引用为$N

    # $ set 1 2 3 four five six 7 8 9 ten
    # $ echo "$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}"
    # 1 2 3 four five six 7 8 9 ten

    #位置参数不能通过赋值语句来赋值,而只能通过Bash的内部命令set和shift来设置和取消它们。当Shell函数运行时,位置参数会被临时地替换。

     1 #===========================================================================================
     2 #
     3 #
     4 #                                    FILE:param.sh
     5 #                                    USAGE:./param.sh                              
     6 #    DESCRIPTION:
     7 #    
     8 #         OPTIONS:---
     9 #    REQUIREMENTS:---
    10 #            BUGS:---
    11 #           NOTES:---
    12 #          AUTHOR:Yuan Shaoqian,yuanshaoqiancom@gmail.com
    13 #    ORGANIZATION:
    14 #         CREATED:09/02/2016 22:38
    15 #        REVISION:---
    16 #===========================================================================================
    17 echo "Argument 1 : $1"
    18 echo "Argument 2 : $2"
    19 echo "Argument 3 : $3"
    20 echo "Argument 4 : $4"
    21 echo "Argument 5 : $5"
    22 <<COMMENT
    23 root@yuan:/root # ./param.sh one two three four five
    24 Argument 1 : one
    25 Argument 2 : two
    26 Argument 3 : three
    27 Argument 4 : four
    28 Argument 5 : five
    29 COMMENT

    特殊参数:

    Bash对一些参数的处理比较特殊,这些参数只能被引用,但不能修改它们的值,这些参数分别是*、@、#、?、-、$、!、0、_

    1、特殊参数*,将扩展为从1开始的所有位置参数。如果扩展发生在双引号内,即“$*”,则扩展为包含每个参数值的单词,每个参数值用特殊变量IFS的第一个字符分隔:“$*”等价于“$1c$2c$3c...”,其中c就是IFS中第一个字符,如果变量IFS没有定义任何字符,则参数之间默认用空格分隔。如果IFS为空,则参数直接相连,中间没有分隔。

    例1:

    1 $ set one two three
    2 $ echo "$*"
    3 one two three

    例2:

    1 $ IFS=":;"
    2 $ set one two three
    3 $ echo "$*"
    4 one:two:three

    2、特殊参数@

    特殊参数@,也将扩展为1开始的所有位置参数。但当它的扩展发生在双引号内时,每个参数都扩展为分隔的单词:“$@”,等价于“$1”、“$2”、“$3”.....参数@和*之间的区别在于将于for循环的调用中显现出来。

    3、特殊参数#

    特殊参数#,将扩展为位置参数的个数,用十进制表示:

    1 $ set one two three
    2 $ echo $#
    3 3

    4、特殊参数?

    特殊参数?,将扩展为最近一个前台执行的命令的退出状态。可以使用它来检测shell脚本执行是否成功,通常退出状态为0表示命令已经没有任何错误地结束运行。

    例:

     1 $ touch newfile
     2 $ echo $?
     3 0
     4 
     5 $ls newfile
     6 $ echo $?
     7 0
     8 
     9 $ rm -f newfiile
    10 $ echo $?
    11 0
    12 
    13 $ ls newfile
    14 $ echo $?
    15 2

    未完成

  • 相关阅读:
    ajax如何调用本页数据源不用一般处理程序
    管理员IP匹配方法
    Silverlight DataGrid赋数据源自动生成列表
    Winform WebBrowser加上进度条
    asp.net的几个帮助类
    asp.net App.config配置文件帮助类
    查找集合中某个元素的位置和某个元素的集合
    sqlServer通用分页
    定时执行某个方法
    关于IE6.7.8.FF兼容的问题
  • 原文地址:https://www.cnblogs.com/yuanshaoqian/p/5839003.html
Copyright © 2020-2023  润新知