Linux数组&基本运算

数组&基本运算

#数组
一组具有相同数组类型的集合
数组类型:
数值类型:
字符串类型:
Bash提供一堆数组的变量功能,数组中所有变量都会被编录成索引,数组的索引从0开始
创建数组:
1.name[subscript]=value
2.Name=(value1…valuen)
3.Declare -a 定义一个空数组
获取数组的值
可以使用echo n a m e [ s u b s c r i p t ] 通 过 索 引 得 到 数 组 的 值 如 果 s u b s c r i p t 是 @ 或 者 ∗ , 则 将 调 用 所 有 的 数 组 成 员 如 果 使 用 {name[subscript]}通过索引得到数组的值 如果subscript是@或者*,则将调用所有的数组成员 如果使用 name[subscript]subscript@使{#name[subscript]}可以返回${name[subscript]}长度
如果是*或者@,则返回数组中元素个数
[root@bogon ~]# a[1]=11 #定义数组下标一等于11
[root@bogon ~]# a[2]=22
[root@bogon ~]# a[3]=33
[root@bogon ~]# echo $a #查看定义数组 没下标不显示

[root@bogon ~]# echo ${a[2]} #查看数组必须要有下标
22 #出列表值
[root@bogon ~]# echo ${a[-1]} #查看数组下标负一
-bash: a: bad array subscript #提示下标从0开始
[root@bogon ~]# echo ${a[]} #查看数组中所有成员
11 22 33
[root@bogon ~]# echo ${a[@]} # #查看数组中所有成员
11 22 33
[root@bogon ~]# echo ${#a[@]} #查看数组的长度
3 #有三个值
[root@bogon ~]# a[8]=6666 #a数组下标8赋值6666
[root@bogon ~]# echo ${#a[8]} #打印a数组下标8的长度
4 #长度4 因为下标8的值是6666
[root@bogon ~]# echo a [ 0 ] , {a[0]}, a[0],{a[1]},${a[2]} #查看a数组的三个下标
,11,22 #下标0 无值
[root@bogon ~]# a[0]=00 #给数组a下标0赋值
[root@bogon ~]# echo a [ 0 ] , {a[0]}, a[0],{a[1]},${a[2]} #查看a数组的三个下标
00,11,22
[root@bogon ~]# echo ‘length of b_0 is’ ${#b[0]} #显示下标0的字长
length of b_0 is 2
[root@bogon ~]# echo KaTeX parse error: Expected '}', got '#' at position 2: {#̲b[*]} #显示数组b全…{arr_num[
]}
arr_length=${arr_string[@]}
#列出索引下标
echo KaTeX parse error: Expected 'EOF', got '#' at position 15: {!arr_num[@]} #̲读取某个下标的值: arr_i…{arr_num[2]}
#对某个下标进行赋值
下标存在:相当与修改原有的值
arr_num[2]=100
下标不存在,按照升序走
arr_num[23]=100
#删除操作:
清除某个元素:
Unset arr_num[1]
清除整个数组:
Unset arr_num
#数组的切片:
格式:${数组名[@/]:开始下标:结束下标}
Echo ${arr_string[
]:2:3}
#数组的遍历
For i in ${arr_string[@]};do #循环这个数组给i
Echo $i; #打印变量i
Done #结束
[root@bogon ~]# arr_num=(1 2 3 4 5 ) #数值行数组
[root@bogon ~]# arr_string=(‘aa’ ‘bb’ ‘cc’) #字符型数组
[root@bogon ~]# echo ${arr_num[]} #打印数组所有值
1 2 3 4 5
[root@bogon ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 18: …rr_string[*]} #̲打印数组所有值 @也行 aa …{#arr_num[
]} #将数组所有下标赋值给arr_lengrt
[root@bogon ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 13: arr_length #̲打印arr_lengrt得出a…{#arr_string[]} #将数组所有下标赋值给arr_lengrt
[root@bogon ~]# echo $arr_length #打印arr_lengrt得出arr_bum的下标数
3
[root@bogon ~]# echo ${!arr_num[
]} #获取数组下标
0 1 2 3 4
[root@bogon ~]# echo ${!arr_string[]} #获取数组下标
0 1 2 3
[root@bogon ~]# echo ${arr_string[
]:2:3} #数组切片
cc dd #把下标2 3 打印出来
[root@bogon ~]# for i in ${arr_string[@]};do #循环数组给变量i

echo $i; #打印变量i
done #结束
aa
bb
cc
dd

算数运算

在bash中可以使用let,(()), ( ( ) ) 或 者 (())或者 (())[]进行基本的整数运算,还可以使用bc进行高级运算,包括小数运算,还可以使用expr命令进行整数运算,还能判断参数是否为整数
注意:let和(())几乎完全等价,除了做数学运算,还支持数据表达式判断,例如数值a是否等于3
Let a3或((a3)),但一般不用,我们用test命令来做,test‘$a’-eq 3
Num =10
Let num=num+10 # 等价于 let num+=10
Let num=num-10 #等价于 let num-=5
Echo $num
let可以使用(())进行替换,如果最后一个算数表达式的结果为0,则返回状态码1,否则返回0
( ( ) ) 或 者 (())或者 (())[]
Num=10
Echo $((num+=6))
Echo [ n u m − + = 16 ] 此 操 作 也 可 以 为 变 量 赋 值 N u m = [num-+=16] 此操作也可以为变量赋值 Num= [num+=16]Num=((num-=10));echo n u m N u m = num Num= numNum=[num-=6];echo n u m 在 算 数 计 算 过 程 中 , 等 号 右 边 的 变 量 可 以 带 着 num 在算数计算过程中,等号右边的变量可以带着 num符号,但等号左边的变量不允许带KaTeX parse error: Expected 'EOF', got '#' at position 12: 符号 Let num=#̲num-1 == let …(( n u m − 1 ) ) = = n u m = num-1)) == num= num1))==num=((num-1))
[root@bogon ~]# num=10 #变量num等于10
[root@bogon ~]# let num=num+10 #+10
[root@bogon ~]# echo $num
20
[root@bogon ~]# let num+=10 #+10
[root@bogon ~]# echo $num
30
[root@bogon ~]# let num=num-5 #-5
[root@bogon ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 22: … [root@bogon ~]#̲ num=((num+25)) #+25
[root@bogon ~]# echo $num
50
[root@bogon ~]# echo $num #打印变量
50
[root@bogon ~]# echo $((num-=6)) #数值运算num变量-6
44
[root@bogon ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 30: … [root@bogon ~]#̲ number=((num-=10));echo $number #num变量-10 在赋值给number
24 #打印number 等于24
[root@bogon ~]# num=10 ##num变量等于10
[root@bogon ~]# echo $[num++] #++代表加1 但现在打印不出来 下次生效
10
[root@bogon ~]# echo $[num–] #- -代表-1 打印出来结果是11 这是上次结果
11 #本次结果得下次打印出来
[root@bogon ~]# echo $[num++]
10

$((x+y)) 加法运算 echo $((1+2))
$((x-y)) 减法运算 echo $((1-2))
$((xy)) 乘法运算 echo $((23))
$((x/y)) 除法运算(取商) echo $((8/6))
$((x%y)) 取于运算 echo $((5%3))
$((x++)) 自加运算 echo $((9++))
$((x–)) 自减运算 echo $((9–))
$((xy)) 幂运算 echo $((33))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值