Shell脚本学习日志 —Shell数组、运算符、逻辑运算符

本文详细介绍了Shell脚本中的数组,包括如何创建、赋值和访问数组元素。同时,讲解了关联数组的使用,展示其键值对的设置和操作。此外,文章还深入探讨了各种运算符,如算术运算符、比较运算符和逻辑运算符,并通过示例展示了它们在条件判断中的应用。最后,讨论了布尔运算符和逻辑运算符在Shell脚本中的用法,包括逻辑与、逻辑或以及关系运算符的实际运用。
摘要由CSDN通过智能技术生成


 

一、Shell数组

  • 使用()创建数组,可以是任意形式,=左右不可有空格
  • 数组中每个元素使用用空格区分
  • 数组下标从0开始计算
  • 使用 * 或者 @ 符号获取数组长度
echo "-----------数组 中间用空格区分 赋值中等号不能加空格-----------"
arr=(12 ad  "da的" d 2)
arr[5]=999

echo "arr输出:${arr[@]}"
echo "arr长度:${#arr[*]}"
arr[${#arr[@]}]=ssa
echo "arr输出:${arr[@]}"

echo 获取下标为4的数组长度:${#arr[4]}

 

二、关联数组

#!bin/bash

echo "-----------键值对-----------"
declare -A as
as["222"]="bbb"
as["111"]="aaa"
as["333"]="ccc"
echo "总输出:${as[@]}"
echo "所有键:${!as[@]}"
echo "长度:${#as[@]}"

三、运算符

#!/bin/bash
#!bin/bash
echo '
+	加法	`expr $a + $b` 结果为 30。
-	减法	`expr $a - $b` 结果为 -10。
*	乘法	`expr $a \* $b` 结果为  200。
/	除法	`expr $b / $a` 结果为 2。
%	取余	`expr $b % $a` 结果为 0。
=	赋值	a=$b 把变量 b 的值赋给 a。
==	相等	用于比较两个数字,相同则返回 true。	[ $a == $b ] 返回 false。
!=	不相等	用于比较两个数字,不相同则返回 true。	[ $a != $b ] 返回 true。'
echo 
echo "-----------运算符 必须有空格-----------"
echo 

val=`expr 2 + 3`
echo "两数之和为:$val"

a=10
b=20
val=`expr $a + $b`
echo $val

val=`expr $a - $b`
echo $val

val=`expr $a \* $b`
echo $val

val=`expr $b / $a`
echo $val

echo "-----------if后、 变量前、后,必须有空格-----------"
if [ $a == $b ]
then 
	echo "yes"
fi

if [ $a != $b ]
then
	echo "No"
fi

 

四、布尔运算符和逻辑运算符


echo
echo " -----------------------布尔运算符和逻辑运算符-------------"
echo
echo '
!	非运算,表达式为 true 则返回 false,否则返回 true。		[ ! false ] 返回 true。
-o	或运算,有一个表达式为 true 则返回 true。			[ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a	与运算,两个表达式都为 true 才返回 true。			[ $a -lt 20 -a $b -gt 100 ] 返回 false。

&&----------逻辑的 AND----------[[ $a -lt 100 && $b -gt 100 ]] 返回 false
||----------逻辑的 OR----------[[ $a -lt 100 || $b -gt 100 ]] 返回 true'

echo 


echo
echo " -----------------------------关系运算符-------------------------------"
echo ' 
eq	检测两个数是否相等,相等返回 true。			[ $a -eq $b ] 返回 false。
-ne	检测两个数是否不相等,不相等返回 true。			[ $a -ne $b ] 返回 true。
-gt	检测左边的数是否大于右边的,如果是,则返回 true。	[ $a -gt $b ] 返回 false。
-lt	检测左边的数是否小于右边的,如果是,则返回 true。	[ $a -lt $b ] 返回 true。
-ge	检测左边的数是否大于等于右边的,如果是,则返回 true。	[ $a -ge $b ] 返回 false。
-le	检测左边的数是否小于等于右边的,如果是,则返回 true。	[ $a -le $b ] 返回 true。'
echo


a=10
b=20

echo "a=$a  b=$b"


if [ $a -gt 5 -a $b -lt 30 ]
then
	echo 'a>5 且 b<30'
fi

if [ $a -gt 5 -o $b -lt 15 ]
then
	echo 'a>5 或 b <15'
fi

if [[ $a -gt 5 && $b -lt 30 ]]
then
	echo 'a>5 && b<30'
fi

if [[ $a -gt 5 || $b -lt 15 ]]
then
	echo 'a>5 || b <15'
fi

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值