为了账号安全,请及时绑定邮箱和手机立即绑定

谁来帮我解答一下这段代码有什么问题

#!/bin/bash

read -t 30 -p "please input two number:" number

read -t 30 -p "please input yunsuanfu:" number2

read -t 30 -p "please input number" number3

if [ -n "$number" -a -n "$number2" -a -n "$number3" ]

then

test1=$(echo number | sed 's/[0-9]//g')

test2=$(echo number3 | sed 's/[0-9]//g')

test3=$(echo number2 | sed 's/[+-*/]//g')

if [-z "$test1" -a -z "$test -a -z "$test" ]

then

case "$number2" in

"+")

        echo $(( "$number1" + "$number2" ))

        ;;

"*")

        echo $(( "$number1 * "$number2))

        ;;

"-")

        echo $(( "$number1" - "$number2" ))

        ;;

esac


fi

fi


正在回答

1 回答

错误点:

1、单词写错:number1不存在,上面写的是number 等等

2、将运算符替换为空,运算符需要进行转义,否则系统把运算符当成正则表达式了


#!/bin/bash


read -t 30 -p "please input two number:" number1

read -t 30 -p "please input yunsuanfu:" number2

read -t 30 -p "please input number:" number3


#判断输入的三个参数是否为非空

if [ -n "$number1" -a -n "$number2" -a -n "$number3" ]

then

test1=$(echo "$number1" | sed 's/[0-9]//g')

test2=$(echo "$number2" | sed 's/[\+\-\*\/]//g')

test3=$(echo "$number3" | sed 's/[0-9]//g')

#判断替换后的三个参数的新value是否为空,为空则表示输入的参数格式正确

if [ -z "$test1" -a -z "$test2" -a -z "$test3" ]

then

case "$number2" in

"+")

       echo $(($number1 $number2 $number3))

       ;;

"*")

       echo $(($number1 $number2 $number3))

       ;;

"-")

       echo $(($number1 $number2 $number3))

;;

esac


fi

fi

0 回复 有任何疑惑可以回复我~
#1

kkkbbb 提问者

非常感谢!
2015-11-09 回复 有任何疑惑可以回复我~
#2

阿强0519

if [ -z "$test1" -a -z "$test2" -a -z "$test3" ] 请问这个语句test1前面不用判断是否存在么?
2019-05-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

谁来帮我解答一下这段代码有什么问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信