如果条件,文件创建不成功

时间:2014-05-12 07:35:58

标签: shell

我正在使用一个脚本来检查插入设备的命令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。

有谁可以帮助我理解这个问题,或者解决它是如何运作的?

1 个答案:

答案 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