详解Shell $*和$@之间的区别

 更新时间:2021年03月01日 10:18:34   作者:衣乌安、  
这篇文章主要介绍了详解Shell $*和$@之间的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

$* 和 $@ 都表示传递给函数或脚本的所有参数,我们已在《Shell特殊变量》一节中进行了演示,本节重点说一下它们之间的区别。

当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。

但是当它们被双引号" "包含时,就会有区别了:

"∗ " 会 将 所 有 的 参 数 从 整 体 上 看 做 一 份 数 据 , 而 不 是 把 每 个 参 数 都 看 做 一 份 数 据 。 " *"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。 "∗"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。"@"仍然将每个参数都看作一份数据,彼此之间是独立的。

比如传递了 5 个参数,那么对于"∗ " 来 说 , 这 5 个 参 数 会 合 并 到 一 起 形 成 一 份 数 据 , 它 们 之 间 是 无 法 分 割 的 ; 而 对 于 " *"来说,这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;而对于"∗"来说,这5个参数会合并到一起形成一份数据,它们之间是无法分割的;而对于"@"来说,这 5 个参数是相互独立的,它们是 5 份数据。

如果使用 echo 直接输出"∗ " 和 " *"和"∗"和"@"做对比,是看不出区别的;但如果使用 for 循环来逐个输出数据,立即就能看出区别来。

示例

#!/bin/bash

echo "-- \$* 演示 ---"
for i in "$*"; do
 echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
 echo $i
done

执行脚本,输出结果如下所示:

$ chmod +x test.sh
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

到此这篇关于详解Shell $*和$@之间的区别的文章就介绍到这了,更多相关Shell $* $@内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux BASH shell下设置字体及背景颜色

    linux BASH shell下设置字体及背景颜色

    这篇文章主要介绍了linux BASH shell下设置字体及背景颜色的方法,需要的朋友可以参考下
    2014-04-04
  • Window11 WSL2 添加静态IP的脚本

    Window11 WSL2 添加静态IP的脚本

    这篇文章主要介绍了Window11 WSL2 添加静态IP的脚本方法,通过一段脚本给 Windows 端的"vEthernet (WSL)"加了IPv4 172.18.16.1,给 Linux 端的 eth0 添加 IPv4 172.18.16.1,在使用前,请按需调整网络接口的名称和IP地址,需要的朋友可以参考下
    2023-01-01
  • 在Shell中分割字符串的例子

    在Shell中分割字符串的例子

    这篇文章主要介绍了在Shell中分割字符串的例子,使用3种方法实现,需要的朋友可以参考下
    2014-06-06
  • Shell内置命令教程之alias和echo

    Shell内置命令教程之alias和echo

    我们日常使用shell输入命令得到结果的方式是交互式的方式,而shell脚本使用的是非交互式方式,shell提供了alias功能来简化我们的日常操作,下面这篇文章主要给大家介绍了关于Shell内置命令教程之alias和echo的相关资料,需要的朋友可以参考下
    2022-03-03
  • 如何解决jenkins 执行shell脚本 sh: ... not found的问题

    如何解决jenkins 执行shell脚本 sh: ... not f

    这篇文章主要介绍了如何解决jenkins 执行shell脚本 sh: ... not found的问题,具有很好的参考价值,希望对大家有所帮助。
    2023-06-06
  • Linux 实现压缩保留源文件的方法

    Linux 实现压缩保留源文件的方法

    下面小编就为大家分享一篇Linux 实现压缩保留源文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • hbase shell基础和常用命令详解

    hbase shell基础和常用命令详解

    HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》
    2012-09-09
  • Linux命令之lz4命令使用示例

    Linux命令之lz4命令使用示例

    lz4是一种非常快速的无损压缩算法,基于字节对齐LZ77系列压缩方案,它的特点是极快的解码器,每核速度可达多GB/s,通常在多核系统上达到RAM速度限制项目,这篇文章主要介绍了Linux命令之lz4命令,需要的朋友可以参考下
    2023-03-03
  • Linux共享内存实现机制的详解

    Linux共享内存实现机制的详解

    这篇文章主要介绍了Linux共享内存实现机制的详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • Linux查看系统配置信息的命令详解

    Linux查看系统配置信息的命令详解

    Linux操作系统由Linux内核和各种外围程序组成, Linux内核是一个特殊的软件程序,用于实现CPU和内存分配,进程调度、设备驱动等核心操作,本文给大家介绍了Linux查看系统配置信息的命令,需要的朋友可以参考下
    2024-04-04

最新评论