如何在shell脚本中定义数组及遍历

问题起源:脚本中定义多个监控模块,代码重复率高,仅仅模块名不同,所以思考如何精简代码?

1、如何定义数组及访问数组:

var=(1 2 3 4 5)
var=(a b c d e)
var=('1' '2' '3' '4' '5')

查看变量:
${var} 或者 $var  默认取第一个

查看全部值:
${var[*]}   ${var[@]}
	
结论:
	Shell 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
	与大部分编程语言类似,数组元素的下标由 0 开始。
	Shell 数组用括号来表示,元素用"空格"符号分割开,通用格式var=(value1 ... valuen)
	读取数组元素值的一般格式是:${var[index]}

2、实践案例:

在这里插入图片描述

二、如何循环遍历数组呢:

#!/bin/bash
# declare an array called array and define 3 vales
array=( one two three )
for i in "${array[@]}"
do
	echo "$i"
done

注意使用双引号,而不是单引号
在这里插入图片描述
如果上述中用的单引号就会报错。为什么呢?

三、单引号与双引号的区别:

在这里插入图片描述

1、单引号定义字符串所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。单引号是全引用,被单引号括起的内容不管是常量还是变量都不会发生替换。
2、双引号引用的内容,所见非所得。如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容。双引号是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容。
3、不使用引号定义字符串时,字符串不能包含空白字符(如Space或Tab),需要该加引号,一般连续的字符串,数字,路径等可以不加引号。如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容。
str1="test String"
str2='test String'
str3=test String

echo $str1
echo $str2
echo $str3


test String
test String



  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值