$@与$*的不同之处

$@与$*的不同之处

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

$@: 把我们传递给脚本的所有参数,每个参数都为独立字符串,当我们用 \((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 20:35
下一篇 2017-06-07 08:27

相关推荐

  • 在Centos系统上安装EPEL扩展源以及安装htop工具

        Htop是一个强大的进程管理前端工具,但这是一个扩展工具,一般在Centos系统源中并没有,所有我们需要到fedora-epel源中下载。         EPEL即Extra Packages for Enterprise Lin…

    Linux干货 2016-02-14
  • Java构造时成员初始化的陷阱

    让我们先来看两个类:Base和Derived类。注意其中的whenAmISet成员变量,和方法preProcess() public class Base {     Base() {         preP…

    Linux干货 2015-04-03
  • 系统启动和内核管理

    Linux组成 Linux:kernel+rootfs kernel:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs:程序和glibc 库:函数集合,function,调用接口(头文件负责描述) 过程调用:procedure,无返回值; 函数调用:function;有返回值,可以赋值于变量中; 程序:二进制执行文件 包括根目录以及包…

    Linux干货 2017-05-14
  • 第二周总结(文件操作命令、用户及组权限管理、BASH命令行展开与执行命令返回值、命令别名使用、执行结果引用、通配符使用)

    1、常见文件管理命令分类         1)文件内容查看(cat、tca、more、less、head、tail)         2)文件字符替换(tr、sed、awk等)         3)文…

    Linux干货 2017-01-31
  • 什么是CA??

       数字证书认证机构(英语:Certificate Authority,缩写为CA),也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。 介绍     CA中心为每个使用公开密钥的用户发放一个…

    Linux干货 2017-07-17
  • centos7源码编译安装Apache2.4.25服务

    •一、源码包下载 •二、安装开发环境以及编译环境 •三、编译安装以及报错排查 •四、调试Apache服务 前言: 本文主要介绍了在Centos7环境中如何通过源码编译的方式安装Apache服务(也就是我们的httpd服务)由于本文整理时间有限,所以难免有些纰漏之处,欢迎大家在阅读后在评论区指出,本人看到会在第一时间修改文中错误的地方。 为什么要进行源码编译安…

    2017-04-22