0

我正在编写以下代码:

if [ $opt -ge $max -o $opt -le  0 ]
then
    echo "Bad";
else
    echo "Good";
    if [ $opt = "\" -o $opt = "/"  ]
    then
        echo "Good";
    else
        echo "Invlaid"; //Line number 21
    fi
fi //Line number 23 no Line number 24.

这显示一个错误:

./file.sh: line 21: unexpected EOF while looking for matching `"'
./file.sh: line 24: syntax error: unexpected end of file

如果我放置此代码:

if [ $opt -ge $max -o $opt -le  0 ]
then
    echo "Bad";
else
    echo "Good";
fi //Line number 23 no Line number 24.

然后就没有错误了。我无法弄清楚问题所在。

4

3 回答 3

3

在你写“\”的地方你开始一个字符串文字,它的第一个字符是双引号。要在字符串中包含反斜杠,您必须在它前面加上另一个:

"\\"
于 2013-07-26T05:55:41.407 回答
1

双引号内的反斜杠\需要转义,否则您可以使用这样的单引号

if [ $opt = '\' -o $opt = '/' ]; then
   echo "Good"
fi

单引号按字面意思对待包裹的字符串,这正是 shell 中的单引号无法转义的确切原因。

于 2013-07-26T06:03:32.223 回答
0
opt="\\"

echo $opt
\

if [ $opt = "/" -o $opt = "\\" ]; then echo "Hi"; else echo "bye"; fi
Hi
于 2013-07-26T06:41:03.560 回答