运算:+ - * /(取商) %(求模,取余) **(次方)
\也是屏蔽符号,只屏蔽后面一个符号的特殊意义
‘’可以屏蔽之间的所有符号的特殊意义
expr 数字1 \* 数字2 (屏蔽掉*的特殊意义,*的特殊意义代表所有)
echo $[数字1 \* 数字2]
[root@desktop0 ~]# a=3
[root@desktop0 ~]# b=5
[root@desktop0 ~]# echo $[a + b]
8
[root@desktop0 ~]# echo $[$a + $b]
8
[root@room8pc205 ~]# echo $[2*3]
6
[root@room8pc205 ~]# echo $[2**3]
8
[root@room8pc205 ~]# echo $[2**4]
16
##################################################
x++ x=x+1
x-- x=x-1
x+=2 x=x+2
x+=5 x=x+5
x*=5 x=x*5
x/=2 x=x/2
# x=1
# y=2
# let z=x+y 计算但不显示
# echo $z 显示出来
3
################################################
bc 计算器 可以处理小数运算
quit 退出
scale=数字1 指定结果的小数点的位数为 数字1位 (加减乘法运算不行)
# echo "scale=4;10/3"|bc
3.3333
# echo "scale=2;10/3"|bc
3.33
# echo "scale=2;3.568+2.265"|bc
5.833
# echo "scale=2;3.568-2.265"|bc
1.303
# echo "scale=2;3.568*2.265"|bc
8.081
# echo "2>9"|bc 做逻辑运算
0
# echo "9>2"|bc
1
##################################################
判断:字符串、数字、文件或目录
语法格式:
[ 判断内容 ] 注意判断内容与[]有空格
1、字串:
[ "abc" == "xyz" ]
[ "$USER" == "root" ]
[ "abc" != "xyz" ]
# echo $? 查看上面的判断结果是否正确 0表示对、1表示错
# [ "xyz" == "xyz" ]
# echo $?
0
# [ -z $dachui] 查看变量dachui的值是否等于zero,看变量dachui的值是否为空值
# echo $?
0
# dachui=1
# [ -z $dachui ]
# echo $?
1
####################################################################
想在一行内,打多个命令
1、 ; && ||
A && B 执行A,仅当A成功,才执行B
A || B 执行A,仅当A失败,才执行B
A;B 执行A,执行B
# [ root == root ] && echo Yes || echo No 执行Yes
Yes
# [ tom == root ] && echo Yes || echo No 执行No
No
2、判断数字:
-eq:等于 equal
-ne:不等于 no equal
-gt:大于 greater than
-ge:大于等于 greater or equal
-lt:小于 less than
-le:小于等于 less or equal
3、文件或目录
-e:是否存在exist
-f:是否存在,且是文件file
-d:是否存在,且是目录directory
-r:是否可读read
-w:是否可写write
-x:是否可执行execute
超级管理员即使删除了r权限,依然可读。
但是删除了x权限后,即使是超级管理员也不能执行。
可以使用超级管理员chmod命令赋予自己执行权限
[ ! -d /abc ] && mkdir /abc
cp a.txt /abc/
[ -d /abc ] || mkdir /abc
cp a.txt /abc/
if语法:
1、单分支
if [ 判断 ]; then 命令
fi
或者
if [ 判断 ]
then 命令
fi
rpm -q net-tools 查看 netstat -antpul |grep 80 #查看端口号80 判断httpd服务是否启用
systemctl status httpd #直接查看httpd服务状态
如果80端口未启动,则启动http
1.有没有包 rpm -q net-tools
if [ $? -ne 0 ]; then
安装
fi
2、双分支
if [ 判断 ];then
命令
elif
命令
fi
ping -W1 192.168.1.1 #等待时间1秒,没回馈就判断为失败
ping -c2 192.168.1.1 #ping的次数为2次,不通就判断为失败
ping -i0.2 192.168.1.1 #ping的间隔时间为0.2秒
3、多分支(多次判断)
if [ 判断1 ];then
命令
elif [ 判断2 ];then
命令
elif [ 判断3 ];then
命令
else
命令
fi