1. #!/bin/bash
    2. #该脚本是写一个简单的计算器
    3. read -p "请输入第一个数字" x
    4. read -p "请输入第二个数字" y
    5. read -p "请输入运算符号" f
    6. #最外层判断,判断输入的是否为空
    7. # -n 判断 是否为非空
    8. # -a 多重条件判断 与
    9. if [ -n "$x" -a -n "$y" -a -n "$f" ]
    10. then
    11. # 下面这个表达式用于判断输入的两个字符是否完全为数字,反引号 和 $()为同一个作用,将系统命令的值赋给变量,原理为,输出变量x的值,并利用管道符,将该值进行字符串替换, sed "s/旧字符串/新字符串/g",末尾g表示将指定范围内的所有旧字符串都替换,所以虽然[0-9]表示匹配一个字符,加了g以后,会替换所有字符。
    12. test1=`echo "$x" | sed "s/[0-9]//g"`
    13. test2=$(echo "$y" | sed "s/[0-9]//g")
    14. #中间的判断,判断输入的两个值是否为数字
    15. if [ -z "$test1" -a -z "$test2" ]
    16. then
    17. # 最内层判断,判断是什么运算符号
    18. if [ "$f" == "+" ]
    19. then
    20. echo "$x和$y的和是"$[$x+$y]
    21. elif [ "$f" == "-" ]
    22. then
    23. echo "$x和$y的差是"$[$x-$y]
    24. elif [ "$f" == "*" ]
    25. then
    26. echo "$x和$y的积是"$[$x*$y]
    27. elif [ "$f" == "/" ]
    28. then
    29. echo "$x和$y的商是"$[$x/$y]
    30. fi
    31. else
    32. echo "您输入的不是数字,重新执行脚本"
    33. bash jisuanqi.sh
    34. exit 2
    35. fi
    36. else
    37. echo "您没有输入数字,重新执行脚本"
    38. bash jisuanqi.sh
    39. exit 1
    40. fi