这段LINUX SHELL 代码为什么会报错 代码如下 read a b c if [ $c == + ] then echo "`expr $a + $b `" elif [ $c == - ] then echo "`expr $a - $b `" elif [ $c == * ] then echo "$(expr $a \* $b)" elif [ $c == / ] then echo "`expr $a / $b `" else echo "bad" fi
时间: 2024-03-06 21:50:56 浏览: 74
详解Shell编程之变量数值计算(二)
这段代码中的问题在于使用了条件判断语句 `[...]`,但是没有考虑到输入的字符串可能为空的情况。当输入的字符串为空时,会导致条件判断语句出错,从而使整个脚本报错。
为了解决这个问题,可以在使用条件判断语句前,先判断字符串是否为空。修改后的代码如下:
```bash
#!/bin/bash
read a b c
if [ -z "$a" ] || [ -z "$b" ] || [ -z "$c" ]; then
echo "Error: Invalid input"
exit 1
fi
if [ "$c" == "+" ]; then
echo "`expr $a + $b`"
elif [ "$c" == "-" ]; then
echo "`expr $a - $b`"
elif [ "$c" == "*" ]; then
echo "`expr $a \* $b`"
elif [ "$c" == "/" ]; then
echo "`expr $a / $b`"
else
echo "bad"
fi
```
其中,`[ -z "$a" ]` 判断变量 `$a` 是否为空。如果为空,则输出错误信息并退出脚本。其他的条件判断语句也做了相应的修改。
阅读全文