我正在使用一个脚本来检查插入设备的命令Timeout,并返回观察到超时的日期。
我写的脚本如下:
while true
do
dmesg -c | tee -a dmesg_logs.txt
grep "Timeout" dmesg_logs.txt
if [ -z $?]
then
date | tee -a timeout_logs.txt
fi
sleep 20s
done
我通过发出命令给它执行权限来运行脚本:
chmod 777 timeout.sh
问题:
当我运行时,会创建dmesg_logs.txt,并在运行脚本时包含所有dmesg日志。但即使在dmesg日志中观察到超时,也不会创建timeout_logs.txt。
有谁可以帮助我理解这个问题,或者解决它是如何运作的?
答案 0 :(得分:1)
而不是grep
然后if [ -z $?]
(这是错误的)你可以这样做:
while true
do
dmesg -c | tee -a dmesg_logs.txt
if grep -q "Timeout" dmesg_logs.txt
then
date | tee -a timeout_logs.txt
fi
sleep 20s
done
grep -q
将返回1或0,具体取决于Timeout
中是否找到dmesg_logs
。