$@与$*的不同之处

$@与$*的不同之处

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

$@: 把我们传递给脚本的所有参数,每个参数都为独立字符串,当我们用 \((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

相关推荐

  • 方便实用的文件查找与压缩

    在平时的运维工作当中通常会编辑某些文件,但时间久了,突然一下子记不起文件的名字,遇到的事情又很紧急,需要立马去处理,而自己只知道那个文件部分的特征信息,我们需要在系统中去搜索自己想要的文件,那么有没有办法去实现呢,当然有,在我们的系统中,文件查找的工具有两个,locate和find。那么下面来介绍这两个工具的用法以及两个工具之间的差别。 在我们linux系统…

    Linux干货 2016-08-13
  • linux进程管理及计划任务

    进程管理: 什么是进程?   在Linux系统当中:触法任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。 进程与程序: 程序(program):通常为二进制程序放置在存储媒介中,以物理文件的形式存在。 进程(process):程序被触发后…

    Linux干货 2016-09-13
  • 知识提炼之0714

    history          history[-c] [-d offset] [n]          history-anrw [filename]    &nbs…

    Linux干货 2017-07-14
  • 学习学习,复习复习,linux基础中的基础

    计算机的组成及其功能          根据冯诺依曼体系结构构成的计算机,应该具备以下几点功能: l  具有把程序、数据输入到计算机的能力 l  具有长期记忆程序、数据、中间结果以及最终结果的能力 l  能够完成各种算术运算、逻辑运算和数据传输的数据…

    Linux干货 2016-09-25
  • N25-第四周

    复制/etc/ske1目录为/home/tuser1,要求/home/tuser及其内部文件的属组和其他用户均没有任何访问权限。 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1[root@localhost ~]# ll -d /home/tuser1/drwxr-xr-x. 2 root root 59 …

    Linux干货 2016-12-25
  • 软件包管理利器之一&RPM

      概述:我们知道使用源代码进行软件编译可以具有定制化的设置,但对于Linux distribution的发行商来说,则有软件管理不易的问题,毕竟不是每个人对于操作系统都非常的熟悉,不是每个人都会进行源代码编译的,因此如果能够将软件现在相同的硬件与操作系统上编译好才发行的话,如果再加上简易的安装/删除/管理等机制,则对于软件管理会简单的多…

    Linux干货 2016-08-24