$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)

例:

#!/bin/bashfor i in "$*"
doecho $i
donefor i in "$@"
doecho "aa$i"done

输出
1 2 3 4
aa1
aa2
aa3
aa4

例:

#!/bin/bashfor i in $*
doecho $i
donefor i in $@
doecho "aa$i"done

输出
1
2
3
4
aa1
aa2
aa3
aa4

其他:


读取数组

读取数组元素值的一般格式是:

${array_name[index]}

实例

#!/bin/bashmy_array=(A B "C" D)echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"

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

$ chmod +x test.sh
$ ./test.sh
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D

获取数组中的所有元素

使用@ 或 * 可以获取数组中的所有元素,例如:

#!/bin/bashmy_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=Decho "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

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

$ chmod +x test.sh
$ ./test.sh
数组的元素为: A B C D
数组的元素为: A B C D

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

#!/bin/bashmy_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=Decho "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"

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

$ chmod +x test.sh
$ ./test.sh
数组元素个数为: 4
数组元素个数为: 4

shell中$*和$@ 两个都区别相关推荐

  1. redis的daemonize设置为yes和no有啥区别呀,为啥我两个都试了之后的效果不是像网上说的那样,设置成No的话,redis也会一直运行呀

    redis的daemonize设置为yes和no有啥区别呀,为啥我两个都试了之后的效果不是像网上说的那样,设置成No的话,redis也会一直运行呀

  2. dotNetFx40_Client_x86_x64和dotNetFx40_Full_x86_x64这两个有什么区别?两个都要安装还是安装其中一个?...

    这个是NET Framework 4.0的安装文件 它是支持生成和运行下一代应用程序和 XML Web Services 的内部 Windows 组件,很多基于此架构的程序需要它的支持才能够运行. 简 ...

  3. Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别

    古人语:独学而无友,则孤陋而寡闻.今效仿先贤,欲结交IT界之通道,帮助梳理开发通用的方法,供后来IT男学习,以成事温家之用.QQ:852383695 Eureka和zookeeper都可以提供服务注册 ...

  4. @query传参_VueRouter之query与params两种传参区别

    传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,比如传个id获取个详情信息,今天咱们就来看看Vue中是怎么实现这种传递参数得 在Vue中提供了两种方法来进行路由传参:query 和 ...

  5. python模块的导入的两种方式区别详解

    Python 有两种导入模块的方法.两种都有用,你应该知道什么时候使用哪一种方法.一种方法,import module,另一种是from module import,下面是 from module i ...

  6. python类的命名空间_Python之关于类变量的两种赋值区别详解

    我就废话不多说了,还是直接看代码吧! # -*- coding:utf-8 -*- #面试题,写一个方法,将一行字符串中所有的单词数量统计出来 class Person(object): TAG = ...

  7. crack与split的区别_Split or Crack? Split 和 Crack 两词的区别(

    BBC Learning English – Q & A of the Week 128 About this script Please note that this is not a wo ...

  8. java三层架构(表示层,业务逻辑层,数据访问层,与两层的区别,三层架构的优缺点)

    目录 1 什么是三层 2 为什么使用三层 3 与两层的区别 1 什么是三层 UI(表现层): 主要是指与用户交互的界面.用于接收用户输入的数据和显示处理后用户需要的数据. BLL:(业务逻辑层): U ...

  9. 小米手环3nfc和4nfc哪个好_小米手环4NFC版和黑加手环NFC版哪个好 两款手环区别对比...

    黑加手环和小米手环都是相当出色的可穿戴设备,昨天正好小米手环4发布了,那么下面我就来说说小米手环4NFC版和黑加手环NFC版哪个更值得选择吧. 两款手环区别对比: 1.屏幕素质 小米手环4NFC和黑加 ...

最新文章

  1. mysql 创建和删除用户
  2. JAVA 获取文件的MD5值大小以及常见的工具类
  3. python 获得当前运行脚本文件的路径
  4. Java 9中的进程处理
  5. 批量读入一个文件夹中文件的数据操作实例
  6. qt设置行编辑器不可编辑
  7. appbarlayout 折叠后 不允许滑动_还在纠结要不要建阳光房?看看可折叠阳光房,或许你就能做选择了...
  8. vb devcon获取u盘信息_iOS 13 U盘越狱法,卡代码及U盘终极解决
  9. Ubuntu20.04 命令行 修改IP地址
  10. redis配置master-slave模式
  11. C#门诊收费管理系统设计(数据库+源码+文档)
  12. JS 利用CNZZ进行站长统计
  13. 2017年域名从Godaddy转移到Namesilo过程全记录
  14. Excel收纳箱:如何通过VBA获A列数据的最大行数
  15. 【转载】浅谈蓝牙 Mesh 组网技术
  16. k30pro杀进程严重怎么解决_命运2掉帧严重怎么解决?GoLink免费加速器助力玩家稳定畅玩...
  17. 零跑汽车股价再创数据新高
  18. windows下修改中用户名为英文
  19. 环回接口---loopback
  20. vscode 自定义代码主题颜色

热门文章

  1. MATLAB周期时域曲线,MATLAB系列之连续时间系统的时域分析
  2. html switch开关实现隐藏,css3实现switch开关效果
  3. js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法
  4. html ondrop未触发,javascript – TableDnD onDrop事件未触发
  5. 计算机科学与技术属于教育技术学么,计算机教育-计算机教育与教育技术学有什么不同吗?我学的专业是计算机教育,我想 爱问知识人...
  6. oracle不一致性关闭下次,Oracle DataGuard
  7. pandas concat_pandas合并几百个csv只需要一分钟?(含代码,拿去即可用)
  8. qt checkbox 选中事件_丽声事件 | 十堰市第五届全国青少儿播音主持等级考试圆满落幕...
  9. html js不触发_图文详解鼠标事件CSS:hover和JS:mouseover的区别
  10. python质数列_现代化程序开发笔记(3)——多文件与模块