shell for 循环问题

2018-08-01 14:12:21 +08:00
 DongDongXie
trainDates='2018-07-25 2018-07-26 2018-07-26'
for dat in $trainDates
do
    echo "$dat"
    temp=$(echo "$trainDates"|awk -F ' ' '{print $1}')
    echo "$temp"
    if [ $dat==$temp ]; then echo "2"; fi
done

刚入手 shell,请问为什么会这样输出呢,跟我预想的不一样啊:

2018-07-25
2018-07-25
2
2018-07-26
2018-07-25
2
2018-07-26
2018-07-25
2
2272 次点击
所在节点    Linux
7 条回复
raynor2011
2018-08-01 14:33:08 +08:00
== 两边加空格
omph
2018-08-01 14:34:21 +08:00
[ $dat == $temp ]
zyp0921
2018-08-01 14:46:40 +08:00
最好再加上双引号
zyp0921
2018-08-01 14:47:03 +08:00
用=就可以了,==是判断数字的。=是判断字符串的
yangg
2018-08-01 15:06:10 +08:00
DongDongXie
2018-08-01 16:50:11 +08:00
@raynor2011 谢谢,加空格之后就可以啦
DongDongXie
2018-08-01 16:50:26 +08:00
@zyp0921 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/475927

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX