有没有在你的代码不正确几个陈述,防止它做你要求它什么。 bash
中的比较用方括号完成,在它们周围留下空间。您正确使用=
进行字符串比较,但应包含在"
字符串变量中。此外,虽然您在echo
语句中正确地指定了元素数组,但是在比较中不这样做,它也应该读${color[$i]}
。星号打印中出现同样的错误。所以,这里有一个修复过的重做代码,但在下面阅读更多。
#!/bin/bash
color[0]=red
color[1]=blue
color[2]=black
color[3]=brown
color[4]=yellow
favorite=black
for i in {0..4};do
echo ${color[$i]};
if [ "$favorite" = "${color[$i]}" ]; then
echo "* ${color[$i]}"
fi
done
虽然该代码的工作现在,这大概是我喜欢和建议(开放由SO社会当然更多的专家意见)几件事情:始终将字符串"
,因为它使明显它是一个字符串变量;当循环一个数组时,不需要使用索引变量;将变量总是包含在${}
之内。 所以我相同的代码的版本是:
#!/bin/bash
color=("red" "blue" "black" "brown" "yellow")
favorite="black"
for item in ${color[@]}; do
echo ${item}
if [ "${item}" = "${favorite}" ]; then
echo "* $item"
fi
done
和指向伟大高级Bash脚本编程指南这里:http://tldp.org/LDP/abs/html/
来源
2016-11-15 04:52:23
sal
什么是现在的代码输出? – CephBirk
您的脚本中充满了错误的语法。 – heemayl