shell脚本中在if语句中比较空串而出现的问题line 5: [: =: unary operator expected
2015-04-14 10:28
447 查看
一个shell脚本:
#!/bin/sh#ifelif
echo "Enter your name: "
read NAME
if [ $NAME = "" ] || [ -z $NAME ]
then
echo "You don't enter your name."
elif [ $NAME = "root" ]
then
echo "Hello root."
elif [ $NAME = "Tom" ]
then
echo "Hello Tom."
else
echo "You aren't root or Tom in $NAME."
fi
在我测试空串的时候,出现问题,报错为./ifelif: line 5: [: =: unary operator expected,后来发现问题是出现在双引号上。
if [ $NAME = "" ] 在进行空串处理时,实际为if [ = "" ] ,这在处理时当然会报操作符异常,因此我们需要在变量上加上双引号即if [ "$NAME" = "" ],这样你在测试空串时,为if [ "" = "" ],shell脚本才会通过。 虽然shell中有没有双引号很多情况下是一致的,但是为了保证正确性,在比较字符串时加上还是一种好的习惯。
相关文章推荐
- shell脚本中的逻辑判断,文件目录属性判断,if特殊用法,case语句
- shell脚本不使用if语句进行选择的脚本
- shell 脚本之if、for、while语句
- Shell脚本应用(五)if语句
- shell脚本编程之if语句学习笔记
- 使用for、if语句添加用户的一个shell脚本
- Shell脚本if else语句小结
- shell脚本中if流程控制语句的应用
- shell脚本_while、if脚本语句_价格竞猜
- 在论坛中出现的比较难的sql问题:19(row_number函数 行转列、sql语句记流水)
- [Shell] if、for、while流程语句以及整数字符串判断比较的实例详解
- linux之基础shell脚本编程2 if语句循环判断
- shell脚本编程之选择执行之if语句
- 2个简单shell脚本(if,while,case语句)
- 【thinkphp】解决IF标签变量与变量比较出现的问题
- 续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,
- shell脚本之-if流程控制语句和for循环语句的使用
- Shell 脚本基础 - 使用 if 语句进行条件检测
- shell 脚本之判断语句 if 详解
- 书写优雅的shell脚本(一)- if语句