linux下test命令选择判断遇到的问题

来源:互联网 发布:淘宝联盟的钱返到哪里 编辑:程序博客网 时间:2024/06/05 10:09

在写一个很简单的脚本的时候,使用test命令来判断两个字符串是否相等,脚本内容如下:

#!/bin/bash#Program#   這個腳本執行的功能:#       1)提示用戶輸入指示信息,y/Y/N/n        2)如果是y/Y,輸出信息   3)如果是n/N,輸出信息   4)如果輸入錯誤,輸出提示 #History:#2015/05/13 daniel  First releasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH#1.輸出提示信息,讓用戶選擇Y或Nread  -p "請輸入選擇,Y/N: " choice#2.判斷,如果是Y/y,就顯示OK,Continuetest $choice=="y" -o $choice=="Y" && echo -e "OK,Continue"  && exit 0#3.判斷,如果是N/n,就顯示oh,Interrupttest $choice=="n" -o $choice=="N" && echo -e "oh,Interrupt"  && exit 0#4.判斷,如果是非法輸入,就顯示I don't know what your choice isecho -e "I don't know what your choice is\n"exit 0

然后执行,不管输入是y/Y/n/N,结果都显示:

daniel@daniel-Inspiron-3420:~/document/脚本文件夹$ ./sh05.sh請輸入選擇,Y/N: nOKContinue

总是不执行语句

test $choice=="n" -o $choice=="N" && echo -e "oh,Interrupt"  && exit 0

我将脚本修改了一下,在==左右都加了空格,如下:

#!/bin/bash#Program#   這個腳本執行的功能:#       1)提示用戶輸入指示信息,y/Y/N/n        2)如果是y/Y,輸出信息   3)如果是n/N,輸出信息   4)如果輸入錯誤,輸出提示 #History:#2015/05/13 daniel  First releasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH#1.輸出提示信息,讓用戶選擇Y或Nread  -p "請輸入選擇,Y/N: " choice#2.判斷,如果是Y/y,就顯示OK,Continuetest $choice == "y" -o $choice == "Y" && echo -e "OK,Continue"  && exit 0#3.判斷,如果是N/n,就顯示oh,Interrupttest $choice == "n" -o $choice == "N" && echo -e "oh,Interrupt"  && exit 0#4.判斷,如果是非法輸入,就顯示I don't know what your choice isecho -e "I don't know what your choice is\n"exit 0

结果就正常了,所以要在使用命令 test 表达式1 == 表达式2 -o 表达式3 == 表达式4的时候,一定要等号两边留有空格,否则就是判断字符串”表达式1==表达式2”的真值了,结果一定为真,返回0

0 0