这很奇怪。
这是我的档案
#!/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语句,无论如何,即使我运行./compile.sh输出输出64,也会说“32位”。
我也试过围绕变量的周围引号。第一个echo语句实际输出“64”。
答案 0 :(得分:3)
使用单个=
来测试字符串。
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" ]
答案 1 :(得分:1)
建议使用案例陈述,简单明了
#!/bin/bash
num=$#
clear
ip=$1
op=$2
ts=$3
echo $ts
case $ts in
"32") echo "32 Bit" ;;
"64") echo "64 Bit" ;;
*) echo "NONE" ;;
esac
echo "Complete!"