bash脚本基本字符串比较

时间:2011-11-01 18:40:36

标签: string bash scripting comparison

我有一个基本的bash脚本问题。这个脚本的输出,我希望是:

一 ÿ b X C ÿ

但相反,我得到:

一 X b X C X

#!/bin/bash                                                                     
for foo in 'a' 'b' 'c'; do
    echo $foo;                                         
    if [ "$foo"=="b" ]; then                                                                        
        echo x;                                                                 
    else                                                                        
        echo y;                                                                 
    fi                                                                                                                                                        
done;    

我错过了什么?

3 个答案:

答案 0 :(得分:3)

试试这个脚本:

#!/bin/bash

for foo in 'a' 'b' 'c'; do
  echo "$foo";

  if [ "$foo" = 'b' ]; then
    echo 'x';
  else
    echo 'y';
  fi
done;

您在bash中使用=进行字符串比较。另外,引用您的echo'字符串。

答案 1 :(得分:2)

您需要在==运算符周围添加空格,否则它将被解析为单个标记a==b(在扩展之后,第一次迭代)。这会传递给test内置([是另一个名称)。由于单个参数a==b是非空字符串原子,因此它成功并以状态0退出,并执行then分支。

答案 2 :(得分:0)

看看以下内容:

#!/bin/bash

for foo in 'a' 'b' 'c'; do

    echo $foo;

    if [ $foo == "b" ]; then        # Make a note of the spaces
        echo "x";
    else
        echo "y";
    fi
done;

此致

Rohan Dsouza