if [ 条件=??? ] then;
elif [ 条件=??? ]
else
fi
-n 判断字符串是否为空 不为空返回true
-z 判断字符串是否为空 为空返回true
-a and 且 串联多个条件
-o or 或
#!/bin/bash read -p "number1: " num1 read -p "number2: " num2 read -p "ope: " ope if [ -n "$num1" -a -n "$num2" -a -n "$ope" ] then test1=$(echo $num1 |sed 's/[0-9]//g') test2=$(echo $num2 |sed 's/[0-9]//g') else echo "enter number is null,try again" exit 12 fi if [ -z "$test1" -a -z "$test2" ] then echo "Please enter a valid value" exit 10 fi if [ "$ope"=='+' ] then sum=$(( $num1 + $num2 )) elif [ "$ope"=='-' ] then sum=$(( $num1 - $num2 )) elif [ "$ope"=='*' ] then sum=$(( $num1 * $num2 )) elif [ "$ope"=='/' ] then sum=$(( $num1 / $num2 )) else echo "Please enter a valid symbol" exit 11 fi echo "$num1 $ope $num2 = $sum"
dfgrf
加减乘除计算器
多分支if条件语句样式
#! bin/bash
read -t 30 -p 'please input num1:' num1
read -t 30 -p 'please input num2:' num2
read -t 30 -p 'please input ope:' ope
# $num1为空
if [-z $num1]
then
echo 'the num1 is null'
exit 1
fi
if [-z $num2]
then
echo 'the num2 is null'
exit 2
fi
if [-z $ope]
then
echo 'the ope is null'
exit 3
fi
#把输出的num1中的数字全部替换成空
test_num1=$(echo $num1 | sed 's/[0-9]//g')
test_num2=$(echo $num2 | sed 's/[0-9]//g')
if [-n $test_num1]
then
echo 'the num1 is not number'
exit 4
fi
if [-n $test_num2]
then
echo 'the num2 is not number'
exit 5
fi
if ["$ope" == '+']
then
result = $(($num1+$num2))
elif["$ope" == '-']
then
result=$(($num1-$num2))
elif["$ope" == '*']
then
result=$(($num1*$num2))
elif["$ope"=='/']
then result=$(($num1/$num2))
else
echo 'the ope is not reconize'
exit 10
fi
echo "$num1$ope$num2 +'='+$result"
多分支if条件语句
if [ 条件判断式1 ]
then
条件成立时,执行的程序
elif [ 条件判断式2 ]
then
条件不成立时,执行另一个程序
else
当所有条件都不成立时,最后执行的程序
fi
#!/bin/bash
read -t 30 -p "Please input num1:" num1
read -t 30 -p "Please input num2:" num2
read -t 30 -p "Please input operator:" ope
if [ -n "$num1" -a -n "$num2" -a -n "$ope" ]
then
test1=$(echo $num1 | sed 's/[0-9]//g')
test2=$(echo $num2 | sed 's/[0-9]//g')
if [ -z "$test1" -a -z "$test2" ]
then
if [ "$ope" == '+' ]
then
result=$(($num1+$num2))
elif [ "$ope" == '-' ]
then
result=$(($num1-$num2))
elif [ "$ope" == '/' ]
then
result=$(($num1 / $num2))
elif [ "$ope" == '*' ]
then
result=$(($num1*num2))
else
echo "Error: the input operator is worng, please input +-*/"
exit 111
fi
else
echo "Error: Please input numbers!"
exit 222
fi
echo "$num1 $ope $num2 is $result"
else
echo "Error: You input null value!"
exit 333
fi
#!/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" ]
#第一层判断,用来判断num1和num2,ope中都有值 -a表示多条件判断,都为真是才为真
then
test1=$(echo $num1 | sed 's/[0-9]//g']
test1=$(echo $num2 | sed 's/[0-9]//g']
#定义变量test1和test2的值为¥(命令)的结果
#后续sed命令 s表示替换,把0-9替换为空,g的意思是都替换,整个命令作用是把变量test1的值替换为空,如果能替换为空,证明num1的值是数字
#如果不能替换为空,证明num1的值为非数字。我们用这种方法判断变量num1的值为数字,用同样的方法测试test2
if [ -z "$test1" -a -z "$test2" ]
#第二层判断,用来判断num1和num2位数值,-z表示为空则返回真
#如果变量test1和test2为空,则证明num1和num2是数字
then
#如果test1和test2是数字,则执行以下命令
if [ "$ope"=='+' ]
#第三层判断用来确认运算符
#测试变量$ope中是什么运算符
then
sum=$(($num1+$num2))
#如果是加号则执行加法运算
elif [ "$ope"=='-' ]
then
sum=(($num1-$num2))
#如果是减号则执行减法运算
elif [ "$ope"=='*' ]
then
sum=(($num1*$num2))
#如果是乘号则执行乘法运算
elif [ "$ope"=='/' ]
then
sum=(($num1/$num2))
#如果除号则执行除法运算、
else
echo "Please enter a valid symbol"
#如果运算符不匹配,则提示输入有效的符号
exit 10
#并退出程序。返回错误代码 10
fi
else
#如果test1和test2不为空,说明tnum1和num2不是数字
echo "Please enter a valid value"
#提示输入有效的数值
exit 11
#并退出程序。返回错误代码 11
fi
else
echo "请输入内容,不能为空”
exit 12
#退出程序,犯会错误代码12
#若输入为空,则提示
fi
echo “$num1 $ope $num2 : $sum”
#输出数值运算的结果
#看返回值用 echo $?
#!/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" ]
#第一层判断,用来判断num1和num2,ope中都有值 -a表示多条件判断,都为真是才为真
then
test1=$(echo $num1 | sed 's/[0-9]//g']
test1=$(echo $num2 | sed 's/[0-9]//g']
#定义变量test1和test2的值为¥(命令)的结果
#后续sed命令 s表示替换,把0-9替换为空,g的意思是都替换,整个命令作用是把变量test1的值替换为空,如果能替换为空,证明num1的值是数字
#如果不能替换为空,证明num1的值为非数字。我们用这种方法判断变量num1的值为数字,用同样的方法测试test2
if [ -z "$test1" -a -z "$test2" ]
#第二层判断,用来判断num1和num2位数值,-z表示为空则返回真
#如果变量test1和test2为空,则证明num1和num2是数字
then
#如果test1和test2是数字,则执行以下命令
if [ "$ope"=='+' ]
#第三层判断用来确认运算符
#测试变量$ope中是什么运算符
then
sum=$(($num1+$num2))
#如果是加号则执行加法运算
elif [ "$ope"=='-' ]
then
sum=(($num1-$num2))
#如果是减号则执行减法运算
elif [ "$ope"=='*' ]
then
sum=(($num1*$num2))
#如果是乘号则执行乘法运算
elif [ "$ope"=='/' ]
then
sum=(($num1/$num2))
#如果除号则执行除法运算、
else
echo "Please enter a valid symbol"
#如果运算符不匹配,则提示输入有效的符号
exit 10
#并退出程序。返回错误代码 10
fi
else
#如果test1和test2不为空,说明tnum1和num2不是数字
echo "Please enter a valid value"
#提示输入有效的数值
exit 11
#并退出程序。返回错误代码 11
fi
else
echo "请输入内容,不能为空”
exit 12
#退出程序,犯会错误代码12
#若输入为空,则提示
fi
echo “$num1 $ope $num2 : $sum”
#输出数值运算的结果
#看返回值用 echo $?
写一个计算器脚本
sed 复习
sed ‘[操作方式]/[旧字符]/[新字符]/g’
#/g 替换所有的“旧字符”
sed ‘s/[0-9]//g’test.txt #把所有的数字替换为空。
逻辑思路步骤
#!/bin/bash
read -t 30 -p "Please input num1:" num1
read -t 30 -p "Please input num2:" num2
read -t 30 -p "Please input operator:" ope
if [ -n "$num1" -a -n "$num2" -a -n "$ope" ]
then
test1=$(echo $num1 | sed 's/[0-9]//g')
test2=$(echo $num2 | sed 's/[0-9]//g')
if [ -z "$test1" -a -z "$test2" ]
then
if [ "$ope" == '+' ]
then
result=$(($num1+$num2))
elif [ "$ope" == '-' ]
then
result=$(($num1-$num2))
elif [ "$ope" == '/' ]
then
result=$(($num1 / $num2))
elif [ "$ope" == '*' ]
then
result=$(($num1*num2))
else
echo "Error: the input operator is worng, please input +-*/"
exit 111
fi
else
echo "Error: Please input numbers!"
exit 222
fi
echo "$num1 $ope $num2 is $result"
else
echo "Error: You input null value!"
exit 333
fi
#!/bin/bash
read -t 30 -p "Please input number1: " num1
read -t 30 -p "Please input number2: " num2
read -t 30 -p "Please input an oprator: " opr
if [ "$opr" == '+' -o "$opr" == '-' -o "$opr" == '*' -o "$opr" == '/' ]
then
result=$(($num1$opr$num2))
echo $result
else
echo "Please input a valid oprator."
fi
多分支if条件语句