$@与$*的不同之处

$@与$*的不同之处

$*: 把我们传递给脚本的参数全部合为一个字节,当成一个字符串或者参数来使用。

$@: 把我们传递给脚本的所有参数,每个参数都为独立字符串,当我们用 \((n) 来调用的时候, 输入参数的位置为第几个,那我们就用用\)n来调用第几个,一对应。

下面我们用代码来看一下这两个的区别:

创建一个简单的脚本让他输出我们输入的多个参数:” $* ”

并且调用自脚本,传给他一个” $@ “的参数。

$@与$*的不同之处

然后再子脚本中写脚本调用并输出3.log(父脚本)” $1 “,也就是第一个参数。

$@与$*的不同之处

运行脚本3.log 输入3个参数分别为a;b;c看运行结果

$@与$*的不同之处

有结果可以看出,子程序在传入” $@ “后,调用” $1 “,只取到了输入的第一个参数的内容,说明多个参数并没有被变为一个字符串。

接下来我们看一下” $* “的调用

4.log这个子程序我们不变。只把3.log中,自脚本调用的参数格式改为” $* “看看结果会如何

$@与$*的不同之处

$@与$*的不同之处

在4.log中,我们输出的还是” $1 “,而这次把我们输入的所有参数都显示了出来。说明我们输入的所有参数被当成一个参数来使用了。

希望通过这个小实验让大家了解二者的区别。

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

(0)
phosphorphosphor
上一篇 2017-06-06
下一篇 2017-06-07

相关推荐

  • 7.22_Linux入门和帮助文件的使用

    Linux系统登录的两种方式 GUI:图形界面 Graphic User Interface 默认在Linux下面有三种可用的图形界面程序可选,分别为 1.gnome(c,图形库gtk) 2.kde(c++,图形库qt) 3.xface(轻量级桌面) 每一种图形界面下面开发的软件并不兼容,因为它们开发时候所用的开发语言也各不相同 启动方式:cli模…

    Linux干货 2016-08-04
  • linux文件系统目录结构

    FHS标准      文件和目录被组织成一个单根的倒置树结构 文件系统从根目录开始用“/”表示 根文件系统:root filesystem 目录名称vfat格式不敏感大小写 以.开头的为隐藏文件 路径分割的/ /boot:引导文件存放目录,内核文件,引导加载器都存放此目录 /bin:供所有用户使用的基本命令;不能关联到…

    Linux干货 2016-07-29
  • 推荐-DNS BIND初探

    DNS BIND DNS BIND 正向解析 反向解析 从服务器 子域授权 转发 view DNS 什么是DNS? DNS是domain name system,域名系统的简写,负责实现域名与IP的转换。 DNS的功能是什么? DNS能够将IP地址与域名相互双向转换,能够实现域名访问。 DNS的历史:  1. 初期网络…

    2016-04-19
  • 用户管理命令之NBA版

    用户管理命令之NBA版 本文纯属扯淡,如有不严谨之处,还请海涵。 1 groupadd 作用:创建一个属组 格式:groupadd [选项] 属组名 选项: -:选项为空 创建新属组 -g:指定组GID,默认是GID+1 实例 1.1 添加属组team,指定组ID为1111      groupadd -g …

    Linux干货 2017-03-27
  • SHELL编程之数组运用及YUM软件包管理

    SHELL编程中,当要引用到多个值的时候,一个一个地进行变量赋值会让我们的脚本变得繁琐,不利于代码的优化,所以,就需要通过数组进行定义,优化代码,减少不必要的定义和命令操作。 SHELL中的数组:存储多个元素的连续内存空间 数组名:整个属组只有一个名字 数组索引: 编号从0开始   数组名[索引]   ${array_name[index…

    Linux干货 2016-08-24
  • Linux基础知识(五)

    1、显示当前系统上root、fedora或user1用户的默认shell [root@server01 ~]# cat /etc/passwd | grep –color=auto -E "^root|fedora|user1" | cut -d : -f 1,7 2、找出/etc/rc.d/init.d/functions文…

    Linux干货 2016-10-25