#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 : five29 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

未完成

转载于:https://www.cnblogs.com/yuanshaoqian/p/5839003.html

Bash中的位置参数和特殊参数相关推荐

  1. python 中的位置参数和默认参数

    args与位置参数和默认参数混用的情况下 示例一.(三者顺序是:位置参数.默认参数.*args)(注意三者的顺序) *args:(表示参数元组) def foo(x,y=1,*args):     p ...

  2. 关于python中的位置参数、关键字参数、可变长位置参数以及可变长关键字参数的详解和他们之间在书写时的顺序的问题,超详细总结的知识点!!!

    位置参数必须在关键字参数的前面. >>> def printGrade(name, className = 'Courage', grade):print("{0}({1} ...

  3. Python自定义函数的位置参数和关键字参数

    1 位置参数和关键字参数 在<Python中自定义函数的方法>中提到,在调用函数时,可以根据函数参数的位置确定该参数的值,此时的参数叫做函数的位置参数,如图1所示. 图1 位置参数 从图1 ...

  4. Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义

    $0, $1, $2,等等... 位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量. (具体见Example 4-5 和Example 11-15) $0表示当前执行的进程名,scr ...

  5. linux 参数扩展,Shell Bash 中的参数扩展

    对于访问 $9 之后的位置参数也同样需要使用大括号,比如: echo "Argument 1 is $1" echo "Argument 10 is ${10}" ...

  6. 如何检查Bash中是否设置了变量?

    我如何知道是否在Bash中设置了变量? 例如,如何检查用户是否将第一个参数赋予函数? function a {# if $1 is set ? } #1楼 检查是否设置了变量 var="&q ...

  7. shell变量加单引号sql_关于shell:在Bash中的命令中扩展变量的单引号

    我想从bash shell脚本中运行一个命令,该脚本在单引号和变量中包含单引号和一些其他命令. 如repo forall -c '....$variable'. 在这种格式中,对$进行转义,不展开变量 ...

  8. 2.7-egrep及bash中的变量

    egrep及扩展的正则表达式 egrep=grep -E grep [OPTIONS] PATTERN [FILE...] 扩展正则表达式的元字符: 字符匹配: .: []: [^]: 次数匹配: * ...

  9. 如何在Bash中加入数组元素?

    如果我在Bash中有这样的数组: FOO=( a b c ) 如何用逗号将元素加入? 例如,产生a,b,c . #1楼 重复使用@无关紧要的解决方案,但是通过避免$ {:1}的替换和避免中间变量的使用 ...

最新文章

  1. php json传值ajax,ajax 与PHP json 传值
  2. Linux bash逐行读取文件的方法
  3. HALCON Progress
  4. iOS端JSON转Model链式编程框架SuperKVC使用方法与原理
  5. Spark基础学习笔记19:RDD的依赖与Stage划分
  6. Java孩子父母类_父母和子女复选框
  7. Word01-从正文处开始插入页码
  8. WPS Office 11.5.5 for Android 8848钛金
  9. php 分换算成元,千元换算成元(千元单位换算器)
  10. 服务器主板电源适配器维修,自己修理笔记本电脑电源适配器
  11. 力扣刷题-题目以及答案
  12. KDC Server安装
  13. region proposal
  14. iPhone苹果手机支付宝App Store消费红包怎么使用?
  15. 【AGL】初探AGL之Application framework
  16. 蓝光播放器中应用的触摸芯片
  17. 基于java的水果商城系统 水果销售系统
  18. Redis阻塞的几种原因
  19. gcc7 编译 linux内核提示 undefined reference to `____ilog2_NaN'
  20. MySQL 不等于的三种使用及区别

热门文章

  1. Github | 微软-计算机视觉最佳实践、代码示例和相关文档
  2. java中JOptionPane类_Java学习之JOptionPane类
  3. 接收率高达29%的ICLR 2021有哪些论文入榜呢?
  4. Hybrid A*论文解析(2)
  5. java for遍历hashmap_Java中HashMap遍历几种方式
  6. c语言中do有什么作用,C语言中do while语句的用法是什么?_后端开发
  7. oracle 自身连接查询,Oracle 连接查询
  8. cad在哪里设置图幅大小_CAD教程之如何设置十字光标大小及颜色
  9. c语言一级考试题目第四季度,模拟试题8套
  10. cximage 控制台 程序 显示图片_VisualStudio创建程序(Create a program)