微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux-为什么结束时间与该shell脚本中的开始时间相同?

我的shell脚本:

$cat sh1.sh
#!/bin/bash
STAT=$(adb get-state)
DATE=$(date "+%Y-%m-%d_%H.%M.%s")
LOG_FILE_PREFIX="log"

LOGFILE="${LOG_FILE_PREFIX}_${DATE}.log"

run ()
{
    #echo Start at $(date)>$LOGFILE
    echo Start at $(date)

    adb logcat -v time -b main -b system >>$LOGFILE

#   echo End at $(date)>>$LOGFILE
}

#trap "echo End at $(date)>>$LOGFILE" INT TERM EXIT
#trap "echo End at $(date)>>$LOGFILE" INT
trap "echo End at $(date)" INT QUIT EXIT TERM

if [ $STAT != "device" ]; then
    echo "please connect to your phone using usb wire and re-run this script file!"
    exit
else
    run
fi

结果:

$./sh1.sh
Start at 2016年 1月29日 星期五 18时21分22秒 CST
^CEnd at 2016年 1月29日 星期五 18时21分22秒 CST
End at 2016年 1月29日 星期五 18时21分22秒 CST

我想通过陷阱INT获得结束时间,但是错了,为什么?

解决方法:

您应该单引号trap命令,以便仅在将要执行时扩展子shell和变量.

trap 'echo End at $(date)' INT QUIT EXIT TERM

用双引号引起来的日期将在设置陷阱时插入,而不是在其中的代码执行时插入.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐