我编写了一个简短的脚本,它从远程主机上的/ etc / sudoers(## Expires 12122012)中抽取一行,然后使用date +%d%m%Y
将其与今天的日期进行比较。即使两个值在显示分配给它们的变量时显示相同,if语句也不会将它们显示为匹配。脚本和输出如下。额外的echo语句用于验证实际匹配的变量。
#!/bin/bash
TODAY=`date +%d%m%Y`
EXPIRES=`ssh -t hostname "grep Expires /etc/sudoers"`
EXPIREDATE=`echo $EXPIRES | awk -F " " '{ printf $3 }'`
if [ $TODAY = $EXPIREDATE ]
then
echo "This matches"
exit
else
echo "this doesn't match"
echo "$TODAY"
echo "$EXPIREDATE"
exit
fi
exit
输出: sh测试
this doesn't match
12122012
12122012
我尝试了多种比较但没有运气。任何想法都表示赞赏。谢谢!
更新
在从注释中应用一些建议来检查空格后,我能够看到更多的echo语句。不太确定这是怎么发生的0_o
#>echo test${TODAY}more
test12122012more
#>echo test${EXPIREDATE}more
more12122012
答案 0 :(得分:2)
您的远程文件正在使用CRLF换行符。您需要通过tr
传递文字才能删除CR。
... | tr -d '\r'