在Unix sh中使用if语句时出现错误问题

2mbi3lxu  于 2022-11-04  发布在  Unix
关注(0)|答案(1)|浏览(153)

我在下面的if语句中遇到了一个问题。它有三个不同的参数,我不确定是一个还是全部都错了。


# !/bin/sh

1=C
2=S
(1/2)=C  <---- This might be a problem

if [ $1 == "C*" ]
then
    echo "The city is:"

else [ $2 ==  "S*" ]
then
    echo "The state is:"

else [ $1 -a $2 == "B*" ]
then
    echo "The city and state is:"

else [ $1 -o $2 -ne "C*" "S*" "B*" ]
then
    echo "Not found!"
fi
    echo End of script
7hiiyaii

7hiiyaii1#

使用数字作为变量是非常不明智的想法。数字是用来表示命令行参数的。
同样这种构造也是AFAIK未知的抨击对象:-ne
还有这种构造:

else [ $2 ==  "S*" ]
then

是错误的,应该是这样的:

elif [ $2 ==  "S*" ]
then

还有这个:

else [ $1 -o $2 -ne "C*" "S*" "B*" ]

如果是奇数,则使用-ne来比较数字,如果是字符串,则使用!=
还有很多其他的错误/问题,挑战我没有时间提到的结构。

相关问题