我的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] 举报,一经查实,本站将立刻删除。