目录
1. 运算符
1.1 算数运算符
基本的算术运算符和其他语言中的基本一致,比如:加:+;减:-;取余:/,等等。但是幂运算在Bash中不直接支持,但可以使用**在$((表达式))中,但这取决于Bash版本和bash的编译选项,或者使用let命令结合expr命令的幂运算 。
运算的基本语法:
- $((运算式))
例如:使用 $((运算式)) 完成123+456
#!/bin/bash
A=123
B=456
echo "A+B=$(($A+$B))"
# 输出结果为:A+B=579
- $[运算式]
例如:使用 $[运算式]完成123+456
#!/bin/bash
A=123
B=456
echo "A+B=$[$A+$B]"
- let命令:let 运算式
第一次使用let是会出现:let not found;使用
sudo dpkg-reconfigure dash
选择 “否”, 表示用bash代替dash
例如:let实现10+5和10*5
#!/bin/bash
a=5
b=10
let sum=$a+$b # 注意“=”“+”前后不可以有空格
echo "Sum is: $sum"
# 输出结果Sum is: 15
let product=$a*$b # 注意“=”“*”前后不可以有空格
echo "Product is: $product"
#输出结果Product is: 50
- expr命令,实现50+10
#!/bin/bash
a=10
b=50
sum=$(expr $a + $b)
echo "Sum is: $sum"
# 输出结果:Sum is:60
1.2 位运算符
常见的位运算符:
例如:对x=1按位取反
#!/bin/bash
X=1
echo $((~X))
# 输出X=-2
1.3 逻辑运算符
常见的逻辑运算符:
例如:测试逻辑与
#!/bin/bash
test -z "" -a -n "abc";echo $? #test中-z中没有字符串为真,-n中有字符串为真
# 输出0,0为真
test -z "a" -a -n "abc";echo $?
# 输出1,1为假
1.4 三元运算符
语法:表达式1?表达式2:表达式3
例如:
#!/bin/bash
A=0
B=1
C=2
D=3
echo $((A?B:C))
# 因为表达式A为0,假;所以输出C,2
echo $((B?C:D))
# 因为表达式B为1,真;所以输出C,2
2. 条件判断
2.1 语法格式
- test condition
- [ condition ] 中括号前后要有空格
- [[ condition ]]
- 非空返回 true,可使用$?验证(0 为 true,>1 为 false)
2.2 文件测试
常用的判断:
例如:测试文件是否存在且为块设备
ls -l /dev/sda
[ -b /dev/sda ];echo $?
# 输出为0,为真
2.3 字符串判断
例如:判断abc是否等于abc;dbc
[ "abc" == "abc" ];echo $? ## “”==“”号两侧必须有空格
# 输出为0
[ "abc" == "dbc" ];echo $?
# 输出为1
2.4 整数值判断
例如:判断1是否等于1;是否等于2
[ 1 -eq 1 ];echo $?
# 输出0
[ 1 -eq 2 ];echo $?
# 输出1
3. 分支语句
3.1 if 语句
语法格式:
if [ 条件1 ]
then
条件1为真执行的语句
elif [ 条件2 ]
then
条件2为真执行的语句
fi
例如:判断bashrc文件是否存在
#!/bin/bash
if [ -e ~/.bashrc ]
then
echo "文件存在"
else
echo "文件不存在"
fi
# 输出:文件存在
3.2 case语句
语法格式:
case “变量值” in
“var1”)
语句1
;;
“var2”)
语句2
;;
“var3”)
语句3
;;
*)
语句4
;;
esac
例如:判断变量值的范围,脚本名为:casesen.sh
#!/bin/bash
case "$1" in
"100")
echo "this=100"
;;
"200")
echo "this=200"
;;
*)
echo "not"
;;
esac
# 输出:sh casesen.sh 100时 this=100
# 输出:sh casesen.sh 200时 this=200
后记:持续更新中…感谢关注。