这很奇怪。
这是我的文件
#!/bin/bash
num=$#
clear
ip=$1
op=$2
ts=$3
echo $ts
if [ $ts=='32' ]; then
echo "32 Bit"
elif [ $ts=='64' ]; then
echo "64 Bit"
else
echo "NONE"
fi
echo "Complete!"
现在,该文件还有更多内容,但是 if 语句无论如何都会显示“32 位”,即使我运行 ./compile.sh input output 64。
我也试过在变量周围加上引号。第一个 echo 语句实际输出“64”。
最佳答案
使用单个 =
来测试字符串。
if [ $ts = "32" ]
所以你的脚本现在变成了这样:
#!/bin/bash
num=$#
clear
ip=$1
op=$2
ts=$3
echo $ts
if [ $ts = "32" ]; then
echo "32 Bit"
elif [ $ts = "64" ]; then
echo "64 Bit"
else
echo "NONE"
fi
echo "Complete!"
编辑:
正如 Chris 提到的那样,即使使用双 =
它也可以工作,但你必须在 ==
周围留出空格,如下所示
if [ $ts == "32" ]
关于linux - 接受任何参数的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21039862/