在写一个很简单的脚本的时候,使用test命令来判断两个字符串是否相等,脚本内容如下:
#!/bin/bash
#Program
# 這個腳本執行的功能:
# 1)提示用戶輸入指示信息,y/Y/N/n 2)如果是y/Y,輸出信息 3)如果是n/N,輸出信息 4)如果輸入錯誤,輸出提示
#History:
#2015/05/13 daniel First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#1.輸出提示信息,讓用戶選擇Y或N
read -p "請輸入選擇,Y/N: " choice
#2.判斷,如果是Y/y,就顯示OK,Continue
test $choice=="y" -o $choice=="Y" && echo -e "OK,Continue" && exit 0
#3.判斷,如果是N/n,就顯示oh,Interrupt
test $choice=="n" -o $choice=="N" && echo -e "oh,Interrupt" && exit 0
#4.判斷,如果是非法輸入,就顯示I don't know what your choice is
echo -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: n
OK,Continue
总是不执行语句
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 release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#1.輸出提示信息,讓用戶選擇Y或N
read -p "請輸入選擇,Y/N: " choice
#2.判斷,如果是Y/y,就顯示OK,Continue
test $choice == "y" -o $choice == "Y" && echo -e "OK,Continue" && exit 0
#3.判斷,如果是N/n,就顯示oh,Interrupt
test $choice == "n" -o $choice == "N" && echo -e "oh,Interrupt" && exit 0
#4.判斷,如果是非法輸入,就顯示I don't know what your choice is
echo -e "I don't know what your choice is\n"
exit 0
结果就正常了,所以要在使用命令 test 表达式1 == 表达式2 -o 表达式3 == 表达式4的时候,一定要等号两边留有空格,否则就是判断字符串”表达式1==表达式2”的真值了,结果一定为真,返回0