1.格式
if [ 条件判断式1 ];then
当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ];then
当条件判断式2成立时,执行程序2
........
else
当所有条件都不成立时,最后执行此程序
fi
2.练习5:字符界面加减乘除的计算器
思路
1.有没有输入内容
2.判断输入的内容是不是数值
3.判断输入的运算符
4.执行运算符操作
脚本
[root@catyuan ~]# vim if5.sh
#!/bin/bash
##字符界面加减乘除计算器
read -t 30 -p "please input num1:" num1
read -t 30 -p "please input num2:" num2 #通过read命令接受要计算的值,并赋予变量num1,num2
read -t 30 -p "please input a operator:" ope #通过read命令接受要计算的符号,并赋予变量ope
if [ -n "$num1" -a -n "$num2" -a -n "$ope" ];then #第一层判断,判断num1和num2中都有值
test1=$(echo $num1 | sed 's/[0-9]//g') #定义变量test1和test2的值为$(命令)的结果
test2=$(echo $num2 | sed 's/[0-9]//g') #sed命令是把变量test1的值替换为空。如果能替换为空,证明num1的值为数字
if [ -z "$test1" -a -z "$test2" ];then #第二层判断,用来判断test1与test2为数值,如果test1和test2的值为空,则是数
字
if [ "$ope" == '+' ];then #第三次判断用来确认运算符,测试$ope中是什么运算符
sum=$(($num1 + $num2))
elif [ "$poe" == '-' ];then
sum=$(($num1 - $num2))
elif [ "$poe" == '*' ];then
sum=$(($num1 * $num2))
elif [ "$poe" == '/' ];then
sum=$(($num1 / $num2))
else
echo "please input + | - | * | /"
exit 10 #如果运算符不匹配,返回错误代码10
fi
else
echo "please enter a valid value" #如果num1和num2不为空,说明输入的num1和num2不是数字,则提示输入有
效的数值
exit 11 #并退出程序,返回错误代码11
fi
else
echo "please input"
exit 12
fi
echo "$num1 $ope $num2 : $sum" #输出数值运算结果
[root@catyuan ~]# chmod 755 if5.sh
[root@catyuan ~]# ./if5.sh
please input num1:2
please input num2:3
please input a operator:+
2 + 3 = 5
[root@catyuan ~]# ./if5.sh
please input num1:a
please input num2:s
please input a operator:+
please enter a valid value
[root@catyuan ~]# ./if5.sh
please input num1:1
please input num2:2
please input a operator:?
please input + | - | * | /
3. 练习6:判断用户输入的是什么文件
脚本
[root@catyuan ~]# vim if6.sh
#!/bin/bash
#判断用户输入的是什么文件
read -p "please input a filename:" file #接受键盘输入,并赋予变量file
if [ -z "$file" ];then #判断file变量是否为空
echo "error,please input a filename"
exit 1
elif [ ! -e $file ];then #判断file的值是否存在
echo "your input is not a file"
exit 2
elif [ -f "$file" ];then #判断file的值是否为普通文件
echo "$file is a regulare file"
elif [ -d "$file" ];then #判断file的值是否为目录文件
echo "$file is a directory"
else
echo "$file ia an other file"
fi
测试脚本
[root@catyuan ~]# chmod 755 if6.sh
[root@catyuan ~]# ./if6.sh
please input a filename:/
/ is a directory
[root@catyuan ~]# ./if6.sh
please input a filename:sa
your input is not a file
[root@catyuan ~]# ./if6.sh
please input a filename:if5.sh
if5.sh is a regulare file
[root@catyuan ~]# ./if6.sh
please input a filename:
error,please input a filename