shell中$*和$@ 两个都区别
$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号
中体现出来。假设在脚本运行时写了三个参数 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中$*和$@ 两个都区别相关推荐
- redis的daemonize设置为yes和no有啥区别呀,为啥我两个都试了之后的效果不是像网上说的那样,设置成No的话,redis也会一直运行呀
redis的daemonize设置为yes和no有啥区别呀,为啥我两个都试了之后的效果不是像网上说的那样,设置成No的话,redis也会一直运行呀
- dotNetFx40_Client_x86_x64和dotNetFx40_Full_x86_x64这两个有什么区别?两个都要安装还是安装其中一个?...
这个是NET Framework 4.0的安装文件 它是支持生成和运行下一代应用程序和 XML Web Services 的内部 Windows 组件,很多基于此架构的程序需要它的支持才能够运行. 简 ...
- Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别
古人语:独学而无友,则孤陋而寡闻.今效仿先贤,欲结交IT界之通道,帮助梳理开发通用的方法,供后来IT男学习,以成事温家之用.QQ:852383695 Eureka和zookeeper都可以提供服务注册 ...
- @query传参_VueRouter之query与params两种传参区别
传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,比如传个id获取个详情信息,今天咱们就来看看Vue中是怎么实现这种传递参数得 在Vue中提供了两种方法来进行路由传参:query 和 ...
- python模块的导入的两种方式区别详解
Python 有两种导入模块的方法.两种都有用,你应该知道什么时候使用哪一种方法.一种方法,import module,另一种是from module import,下面是 from module i ...
- python类的命名空间_Python之关于类变量的两种赋值区别详解
我就废话不多说了,还是直接看代码吧! # -*- coding:utf-8 -*- #面试题,写一个方法,将一行字符串中所有的单词数量统计出来 class Person(object): TAG = ...
- 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 ...
- java三层架构(表示层,业务逻辑层,数据访问层,与两层的区别,三层架构的优缺点)
目录 1 什么是三层 2 为什么使用三层 3 与两层的区别 1 什么是三层 UI(表现层): 主要是指与用户交互的界面.用于接收用户输入的数据和显示处理后用户需要的数据. BLL:(业务逻辑层): U ...
- 小米手环3nfc和4nfc哪个好_小米手环4NFC版和黑加手环NFC版哪个好 两款手环区别对比...
黑加手环和小米手环都是相当出色的可穿戴设备,昨天正好小米手环4发布了,那么下面我就来说说小米手环4NFC版和黑加手环NFC版哪个更值得选择吧. 两款手环区别对比: 1.屏幕素质 小米手环4NFC和黑加 ...
最新文章
- mysql 创建和删除用户
- JAVA 获取文件的MD5值大小以及常见的工具类
- python 获得当前运行脚本文件的路径
- Java 9中的进程处理
- 批量读入一个文件夹中文件的数据操作实例
- qt设置行编辑器不可编辑
- appbarlayout 折叠后 不允许滑动_还在纠结要不要建阳光房?看看可折叠阳光房,或许你就能做选择了...
- vb devcon获取u盘信息_iOS 13 U盘越狱法,卡代码及U盘终极解决
- Ubuntu20.04 命令行 修改IP地址
- redis配置master-slave模式
- C#门诊收费管理系统设计(数据库+源码+文档)
- JS 利用CNZZ进行站长统计
- 2017年域名从Godaddy转移到Namesilo过程全记录
- Excel收纳箱:如何通过VBA获A列数据的最大行数
- 【转载】浅谈蓝牙 Mesh 组网技术
- k30pro杀进程严重怎么解决_命运2掉帧严重怎么解决?GoLink免费加速器助力玩家稳定畅玩...
- 零跑汽车股价再创数据新高
- windows下修改中用户名为英文
- 环回接口---loopback
- vscode 自定义代码主题颜色
热门文章
- MATLAB周期时域曲线,MATLAB系列之连续时间系统的时域分析
- html switch开关实现隐藏,css3实现switch开关效果
- js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法
- html ondrop未触发,javascript – TableDnD onDrop事件未触发
- 计算机科学与技术属于教育技术学么,计算机教育-计算机教育与教育技术学有什么不同吗?我学的专业是计算机教育,我想 爱问知识人...
- oracle不一致性关闭下次,Oracle DataGuard
- pandas concat_pandas合并几百个csv只需要一分钟?(含代码,拿去即可用)
- qt checkbox 选中事件_丽声事件 | 十堰市第五届全国青少儿播音主持等级考试圆满落幕...
- html js不触发_图文详解鼠标事件CSS:hover和JS:mouseover的区别
- python质数列_现代化程序开发笔记(3)——多文件与模块