【求助】ubuntu不支持[]表达式?

sh/bash/dash/ksh/zsh等Shell脚本
回复
kingdelee
帖子: 1
注册时间: 2014-12-01 16:12

【求助】ubuntu不支持[]表达式?

#1

帖子 kingdelee » 2014-12-01 16:16

下面这段代码我在ubutnu 14.04中执行

代码: 全选

#!/bin/bash
# Program:
#       This program shows the user's choice
# History:
# 2005/08/25    VBird   First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input (Y/N): " yn

if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        echo "OK, continue"
        exit 0
fi
if [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
        echo "Oh, interrupt!"
        exit 0
fi
echo "I don't know what your choice is" && exit 0
结果如下:
Please input (Y/N): y
sh06-2.sh: 11: [: y: unexpected operator
sh06-2.sh: 11: [: y: unexpected operator
sh06-2.sh: 15: [: y: unexpected operator
sh06-2.sh: 15: [: y: unexpected operator
I don't know what your choice is

但是在centos下执行结果如下:
Please input (Y/N): y
OK, continue

不支持[]表达式么?怎么弄才支持?
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 【求助】ubuntu不支持[]表达式?

#2

帖子 astolia » 2014-12-01 22:26

你肯定是用sh xxx来执行的。sh在ubuntu中默认是dash的软链接。dash有内置命令[,但内置命令[比较字符串是用的传统的=,而非那个==
所以如果你要用bash的特性,就用bash xxx来执行,或者加上可执行权限,直接用文件名执行,让系统自己通过shebang调用bash。要不然就用最通用的写法
回复