一文学会shell编程2

1. 运算符

1.1 算数运算符

基本的算术运算符和其他语言中的基本一致,比如:+-取余/,等等。但是幂运算在Bash中不直接支持,但可以使用**在$((表达式))中,但这取决于Bash版本和bash的编译选项,或者使用let命令结合expr命令的幂运算 。

运算的基本语法

  1. $((运算式))
    例如:使用 $((运算式)) 完成123+456
#!/bin/bash
A=123
B=456
echo "A+B=$(($A+$B))"
# 输出结果为:A+B=579
  1. $[运算式]
    例如:使用 $[运算式]完成123+456
#!/bin/bash
A=123
B=456
echo "A+B=$[$A+$B]"
  1. 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
  1. 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

后记:持续更新中…感谢关注。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值