shell中的位置参数变量

要了解位置变量,首先要知道什么是变量?

 变量就是让某一个特定的字符串来代表不固定的内容,简单理解就是用一个简单的“字眼”来替代另一个比较复杂或者容易变动的数据。

而什么又是位置变量呢?

 位置变量就是bash将传递给脚本的参数,按照位置不同,保存在不同的位置变量中,以便于脚本调用这些变量。

位置参数变量:

$1, $2, …: 对应第1、第2等参数,shift [n]换位置
$0:  命令本身
$*:  传递给脚本的所有参数,全部参数合为一个字符串;代表“$1$2$3…”
$@:  传递给脚本的所有参数,每个参数为独立字符串;代表“"$1" "$2" "$3" …”
$#:  传递给脚本的参数的个数

    注:$@ ,$* 只在被双引号包起来的时候才会有差异

示例:

编写一个脚本来测试一下上述的位置参数变量:

shell中的位置参数变量

shell中的位置参数变量

这个示例,可以看到位置参数变量,在bash中就实现定义好的,按照位置分配不同的变量。在执行脚本的时候,后面直接跟参数,就会赋予不同的变量,这样在脚本中就可以直接调用。通过示例可以证明,

$N(N表示不同的数字),及可表明第N个参数变量;$0表示命令本身。

注:第十个以上的位置参数变量要使用“{ }”括起来,如:${10}


示例:比较$10和${10}的区别

shell中的位置参数变量

可以看到"$10"表示($1)0;"${10}"才表示第十个位置参数变量.所以10以上的位置参数变量,需要用配合"{ }"来使用。



示例:比较"$*"和"$@"的区别

首先在一个空目录下编写了一个测试脚本,测试过程如图所示:shell中的位置参数变量

可以看到:“touch "$*"”创建了一个名为“aa bb”的文件

而“mkdir "$@"”创建了aa和bb两个目录。

所以,"$*"和"$@"虽然都是表示全部的参数,但是"$*"是把所有的参数当成为一个整体,而"$@"则是把每个参数独立看待。

需要注意的是,$*和$@只在被双引号包起来的时候才会有差异。

让我们来看下没有加双引号的情况:

shell中的位置参数变量

如图所示,使用“touch $*”是创建了cc和dd两个文件,而“mkdir $@”因此存在同名文件而没有创建成功,但是通过执行过程也可以看到,它是要创建cc和dd两个目录。所以以后使用"$*"或"$@"时,一定要加上双引号。

还有一个位置参数变量为$#,这个变量表示传递给脚本的参数的个数,让我们来看看如何使用这个变量。

shell中的位置参数变量

可以看到$#表示位置参数的个数,并且在脚本中可以利用"$#"来判断是否存在位置参数。

原创文章,作者:Groot,如若转载,请注明出处:http://www.178linux.com/34071

赞 (1)
GrootGroot
上一篇 2016-08-12 16:06
下一篇 2016-08-12 16:06

相关推荐

  • 计划任务

    任务计划Linux任务计划、周期性任务执行未来的某时间点执行一次任务:atbatch:系统自行选择空闲时间去执行此处指定的任务周期性运行某任务:cron     at任务at命令:at [option] TIME常用选项:-V 显示版本信息:-l: 列出指定队列中等待运行的作业;相当于atq-d: 删除指定的作业;相当于atrm-c: 查…

    Linux干货 2017-08-28
  • N21_迟来的第三周练习

    最近忙成狗,落后了许多 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 # who | cut -d ' ' -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。 # last&nbsp…

    Linux干货 2016-08-02
  • LVM详解

    目录:  一、概述  二、LVM的相关概念  三、概念图  四、LVM基本操作    1.创建PV    2.查看PV信息    3.创建VG    4.查看VG信息    5.创建LV    6.查…

    Linux干货 2015-09-22
  • 关于ip_conntrack跟踪连接满导致网络丢包问题的分析

    http://ixdba.blog.51cto.com/2895551/1737642

    Linux干货 2016-06-03
  • linux基础

    1.计算机的组成及其功能。 计算机的主要组成部分可以归纳为以下五个部分:控制器、运算器、存储器、输入设备、和输出设备。 控制器 是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 运算器 运算器的功能是对数据进行各种算术运算…

    Linux干货 2016-08-15
  • mkdir练习

    课外资料 mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它…

    Linux干货 2016-08-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-16 16:21

    总结的很全面,图片清晰明了,完成的很认真,再接再厉!