首页 > shell 问题

shell 问题

#!/bin/sh
begin=`date -d '-5 minute' '+ %Y/%m/%d %H:%M'`
end=`date '+ %Y/%m/%d %H:%M'`
logfile=nohup.log
log=`sed -n "/$begin/,/$end/p" $logfile`
if [ "$log" = "" ]; then
        echo 1
else
        echo $log
fi

运行结果

[root@i-612-35703-VM ~]# ./f
sed: -e expression #1, char 8: unknown command: `0'
1

这哪错了
第一行单独运行没问题啊


sh -x f 帖结果


#!/bin/sh
begin=`date -d '-5 minute' '+ %Y/%m/%d %H:%M'`
end=`date '+ %Y/%m/%d %H:%M'`
begin=${begin//\//\\\/}
end=${end//\//\\\/}
logfile=nohup.log
log=`sed -n "/$begin/,/$end/p" $logfile`
if [ "$log" = "" ]; then
        echo 1
else
        echo $log
fi

试试这个!你输出的日期字符串里含有 /,而/是sed的模式匹配符。
我加 \ 转义过了。


估计是因为 $begin $end 字符里有 "/"
需要转义吧

【热门文章】
【热门文章】