我有一个基本的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;
我错过了什么?
答案 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