Shell script learning log - Shell arrays, operators, logical operators


 

1. Shell array

  • Use () to create an array, which can be in any form, and there must be no spaces around =
  • Each element in the array is separated by a space
  • Array subscripts start counting from 0
  • Use * or @ symbol to get the length of the array
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]}

 

2. Associative arrays

#!bin/bash

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

3. Operators

#!/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

 

4. Boolean and Logical Operators


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

 

Guess you like

Origin blog.csdn.net/qq_53734051/article/details/126451900