字符串匹配并执行条件

时间:2017-07-04 03:26:47

标签: bash sh

当我尝试匹配字符串并做一些条件时;它总是没有这样做。

date=`date +%Y%m%d`
kol="/home/user/test_$date"
regex='Terminating the script'

if [ -f $kol ]; then

  sudo tail -f $kol | while read line; do 
     if [[  $line  = *"Terminating the"* ]]
     then

        echo "failed"

     else

        echo $line >> /home/user/test123_$date

     fi
else

   echo "File is not yet present"
   exit 0
fi 

我也尝试过使用正则表达式而失败了。因此,当我将匹配的字符串输入到文件($ path)时,它不会输出"失败&#34 ;;代码中有什么问题吗?非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

你可以试试这个。至少它对我有用:

sudo tail -f $1 | while read line; do

    if [[ $line = '' ]] 
    then
        break
    fi

    if [[  $line = *"Terminating the"* ]]
    then
        echo "failed"
    else
        echo $line >> /home/nurzhan/test123_$date
    fi
    done < "$1"

$path是正在运行的脚本的参数。另请注意,默认情况下,命令tail仅返回10个最后一行。