Shell脚本接受任何内容作为参数

时间:2014-01-10 08:58:22

标签: linux string bash shell if-statement

这很奇怪。

这是我的档案

#!/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”。

2 个答案:

答案 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!"