vim math.sh
# a=1
# b=2
# c=$a+$2
或者
# c=$(($a+$b))
# echo $c
条件判断:
格式1:
if [ 条件 ]
then
条件为真执行的任务
fi
格式2:
fi [ 条件 ]
then
执行条件为真的任务
else
执行条件为假
fi
格式2:
fi [ 条件1 ]
then
条件1为真执行条件为真的任务
elif [ 条件2 ]
then
条件2为真执行条件为假
else
两个条件都不满足
fi
条件判断的书写
: ':'表示真
> -gt greater than
< -lt littler than
>= -ge greater equal
<= -le littler equal
== -eq equal
!= -ne not equal
|| && 的书写:
if [ $a -lt 10 ] && [ $a -gt 1 ] ==> if [ $a -lt 10 -a $a -gt 1 ]
then
echo ok
fi
判断一个变量是否为空:
[ -z $? ] 判断执行结果是否为空
[ ! -z $? ] 判断执行结果是否为不为空
wc -l filename 判断文件的行数
# n=`wc -l 1.txt | awk '{print $3}'` # 结果为空
# if [ $n -gt 30 ] ; then echo "ok" ; fi # 命令出错 因为n为空
# if [ -z $n ] ;then echo "null" ; fi # 判断是否为空
文件的判断:
[ -e 1.sh ] 是否存在
[ -f 1.sh ] 是否是文件
[ -d 1.sh ] 是否是目录
[ -r 1.sh ] 文件是否可读
[ -x 1.sh ] 文件是否可执行
[ -w 1.sh ] 文件是否可写
综合小例子:判断奇偶
vim elseDemo.sh
#!/bin/bash
read -p "请输入一个数字:" n
# n2=`echo $n|grep -c '[^0-9]'` # 根据过滤的结果 输出含有非数字的行数
# if [ $n2 -eq 1 ]
if echo $n | grep -q '[^0-9]' # 用一条命令的返回值作为俄判断条件
then
echo "请你输入的不是数字,请重新输入"
exit 1
fi
n1=$[$n%2]
if [ $n1 -eq 0 ]
then
echo "你输入的数字是偶数"
else
echo "你输入的数字是奇数"
fi
exec :常用在脚本的开头 只针对exec下面的命令
exec > /tmp/log 2>&1 #将脚本输出信息重定向到/tmp/log里面
vim date.sh
#!/bin/bash
d=`date +%F`
exec > /tmp/$d.log 2>&1 #将脚本输出信息重定向到其他文件
echo "Begin on `date`"
ls /tmp/sasassa
cd /tmp/sasas
ls /root
echo "End at `date`"
格式:
case $1 in
start)
执行程序1
;;
stop)
执行程序2
;;
.....
*)
其他的都不存在
esac
在选项的下边可以使用活
case $1 in
start|restart) # 或者的关系
执行程序1
;;
stop)
执行程序2
;;
.....
*)
其他的都不存在
esac
case使用实例:
vim case.sh
#!/bin/bash
read -p "请输入一个数字: " n
n1=`echo $n | sed 's/[-0-9]//g'` #可以负号的
if [ ! -z $n1 ] # 判断是否是纯数字 如果是纯数字则为空
then
echo "请输入一个纯数字"
exit 1
# elif [ $n -lt 0 ] || [ $n -gt 100 ]
#then
# echo "数字的范围0-100"
# exit 2
fi
if [ $n -lt 60 ]
then
tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
tag=2
elif [ $n -ge 80 ] && [ $n -lt 90 ]
then
tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
tag=4
fi
case $tag in
1)
echo "不及格"
;;
2)
echo "及各"
;;
3)
echo "良好"
;;
4)
echo "优秀"
;;
*)
echo "不在0-100范围"
;;
esac