shell脚本⽐较字符串相等_shell脚本--逻辑判断与字符串⽐较涉及到⽐较和判断的时候,要注意
整数⽐较使⽤-lt,-gt,ge等⽐较,详情参考:整数⽐较
⽂件测试使⽤ -d, -f, -x等运算发,详情参考:⽂件测试
逻辑判断使⽤ &&(且)、||(或)、!(取反)
⽐较实⽤
字符串的⽐较使⽤以下三个⽐较运算符:= 或者(==)、!= 、> 、
-n表⽰判断后⾯的值是否为空,不为空则返回true,为空则返回false。
下⾯的⼀个例⼦:
#!/bin/bash
#⽂件名:test.sh
read -p 'please input name:' name
read -p 'please input password:' pwd
if [ -z $name ] || [ -z $pwd ]
then
echo "hacker"
else
if [ $name == 'root' ] && [ $pwd == 'admin' ]
then
echo "welcome"
else
echo "hacker"
fi
fi
运⾏测试:
ubuntu@ubuntu:~$ ./test.sh
please input name:root
please input password:admin
welcome
ubuntu@ubuntu:~$ ./test.sh
please input name:root
please input password:
hacker
ubuntu@ubuntu:~$ ./test.sh
please input name:root
please input password:beyond
hackershell代码
ubuntu@ubuntu:~$
注意:
⽐较运算符的两边都有空格分隔,同时要注意⽐较运算符两边的变量是否可能为空,⽐如下⾯这个例⼦:
#!/bin/bash
#⽂件名:test.sh
if [ $1 == 'hello' ];then
echo "yes"
elif [ $1 == 'no' ];then
echo "no"
fi
运⾏:
ubuntu@ubuntu:~$ ./test.sh
./test.sh: line 4: [: ==: unary operator expected
./test.sh: line 7: [: ==: unary operator expected
ubuntu@ubuntu:~$ ./test.sh hello
yes
ubuntu@ubuntu:~$ ./test.sh no
no
ubuntu@ubuntu:~$ ./test.sh test
ubuntu@ubuntu:~$
可以看到,在代码中想要判断shell命令的第⼆个参数是否为hello或者no,但是在测试的时候,如果没有第⼆个参数,那么就变成了 if [ == 'hello' ],这个命令肯定是错误的了,所以会报错,⽐较好的做法是在判断之前加⼀个判断变量是否为空 或者使⽤双引号将其括起来,注意,必须使⽤双引号,因为变量在双引号中才会被解析。
#!/bin/bash
#⽂件名:test.sh
if [ "$1" == 'yes' ]; then
echo "yes"
elif [ "$1" == 'no' ]; then
echo "no"
else
echo "nothing"
fi
运⾏:
ubuntu@ubuntu:~$ ./test.sh nothing
ubuntu@ubuntu:~$ ./test.sh yes yes
ubuntu@ubuntu:~$ ./test.sh no
no
ubuntu@ubuntu:~$ ./test.sh demo nothing
这样的话,就不会报错了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论