方式一:使用expr命令
[root@bigdata001 ~]# expr 2 \* 3
6
[root@bigdata001 ~]# echo $(expr 2 \* 3)
6
[root@bigdata001 ~]# echo `expr 2 \* 3`
6
[root@bigdata001 ~]#
方式二:
[root@bigdata001 ~]# echo $((2*3))
6
[root@bigdata001 ~]#
方式三:
[root@bigdata001 ~]# echo $[2*3]
6
[root@bigdata001 ~]#
[root@bigdata001 ~]# a=2
[root@bigdata001 ~]# b=3
[root@bigdata001 ~]# echo $[$a*$b]
6
[root@bigdata001 ~]#
方式一:使用test命令,为真则执行正常,为假则执行不正常
[root@bigdata001 ~]# a=hello
[root@bigdata001 ~]#
[root@bigdata001 ~]# test $a = hello
[root@bigdata001 ~]# echo $?
0
[root@bigdata001 ~]#
[root@bigdata001 ~]# test $a = Hello
[root@bigdata001 ~]# echo $?
1
[root@bigdata001 ~]#
方式二:[ condition ],condition前后要有空格
[root@bigdata001 ~]# a=hello
[root@bigdata001 ~]#
[root@bigdata001 ~]# [ $a = hello ]
[root@bigdata001 ~]# echo $?
0
[root@bigdata001 ~]#
[root@bigdata001 ~]# [ $a = Hello ]
[root@bigdata001 ~]# echo $?
1
[root@bigdata001 ~]#
注意条件判断的=号前后也要有空格,否则会当成一个字符串,则判断为真
字符串的相等用=
进行判断,不相等用!=
进行判断,字符串是否为空用-n "判断的字符串"
进行判断
整数之间的比较:
示例:
[root@bigdata001 ~]# [ 2 -gt 8 ]
[root@bigdata001 ~]# echo $?
1
[root@bigdata001 ~]#
按照文件权限进行判断:
示例:
[root@bigdata001 ~]# ll
总用量 28
-rw-r--r-- 1 root root 0 7月 20 22:15 test
[root@bigdata001 ~]#
[root@bigdata001 ~]# [ -x /root/test ]
[root@bigdata001 ~]# echo $?
1
[root@bigdata001 ~]#
按照文件类型进行判断:
示例:
[root@bigdata001 ~]# ll
总用量 28
-rw-r--r-- 1 root root 0 7月 20 22:15 test
[root@bigdata001 ~]#
[root@bigdata001 ~]# [ -d /root/test ]
[root@bigdata001 ~]# echo $?
1
[root@bigdata001 ~]#
&&表示逻辑与,也可以用-a表示。只有第一个条件为真,才会进行第二个条件的判断
||表示逻辑或,也可以用-o表示。只有第一个条件为假,才会进行第二个条件的判断
示例:
[root@bigdata001 ~]# [ bulut ] && echo ok || echo not ok
ok
[root@bigdata001 ~]#
[root@bigdata001 ~]# [ 20 -gt 18 -a 20 -lt 25 ]
[root@bigdata001 ~]# echo $?
0
[root@bigdata001 ~]#
语法:
if [ 条件判断式 ];then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
示例:
[root@bigdata001 ~]# if [ 20 -gt 18 ];then echo ok;fi
ok
[root@bigdata001 ~]#
语法:
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序 1
;;
值2)
如果变量的值等于值 2,则执行程序 2
;;
…...省略其他分支......
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
示例:
[root@bigdata001 ~]# cat test.sh
#!/usr/bin/sh
case $1 in
"1")
echo one
;;
2)
echo two
;;
*)
echo "其它数字"
;;
esac
[root@bigdata001 ~]#
[root@bigdata001 ~]# sh test.sh 1
one
[root@bigdata001 ~]#
语法一:
for (( 初始值; 循环控制条件; 变量变化 ))
do
程序
done
示例:
[root@bigdata001 ~]# cat test.sh
#!/usr/bin/sh
sum=0
for (( i=0; i <= 100; i++ ))
do
sum=$[$sum+$i]
done
echo $sum
[root@bigdata001 ~]#
[root@bigdata001 ~]# sh test.sh
5050
[root@bigdata001 ~]#
这里能直接进行数值的比较,是因为在两个小括号(运算符)里面。例如:
[root@bigdata001 ~]# if (( 3 > 2 )); then echo ok; fi
ok
[root@bigdata001 ~]#
语法二:
for 变量 in 值 1 值 2 值 3 …...
do
程序
done
示例:
[root@bigdata001 ~]# for i in {1..3}; do echo $i; done
1
2
3
[root@bigdata001 ~]#
语法:
while [ 条件判断式 ]
do
程序
done
示例:
[root@bigdata001 ~]# cat test.sh
#!/usr/bin/sh
i=1
sum=0
while [ $i -le 100 ]
do
let sum+=i
let i++
done
echo $sum
[root@bigdata001 ~]# sh test.sh
5050
[root@bigdata001 ~]#
let语法的加减前后不能有空格
语法:read (选项) (参数)
示例:
[root@bigdata001 ~]# cat test.sh
#!/usr/bin/sh
read -p "请输入你的名字: " -t 10 name
echo $name
[root@bigdata001 ~]#
[root@bigdata001 ~]# sh test.sh
请输入你的名字: zhang_san
zhang_san
[root@bigdata001 ~]#