GREP变量和空白空间的问题



我正在尝试使这一点代码工作。而且我用可变的$ pkgname挂在第二个管道的GREP上。我找不到正确读取变量的方法,要么没有输出,要么由于当前编写代码,我会得到GREP:非法字节序列。如果我在变量中没有空间的任何一个文本,或者作为GREP语句的一部分输入文本。

 #!/bin/bash
counter=0
results2=Executing SSH MOTD banner
pkgname=SSH MOTD banner
until [ $counter = 1 ]
do
    echo $counter
    echo $pkgname
    echo $results2
    result=$(grep "$(date +"%b %d")" /var/log/test.log | grep “$pkgname” | cut -d':' -f 4 | sed 's/^ *//g')
    echo $result
    if [ “$result” == “$results2” ]; then 
    counter=1
    fi
done
echo finished

所以我正在寻找的日志文件行。

6月28日星期二10:58:57 MachineName Process:执行SSH Motd Banner

更改为

pkgname="SSH MOTD banner" # Here use quotes to avoid using 

正如[@jack]正确指出的[注释],您需要中性引号 "才能扩展一个变量。也就是说,您可以将正则态度简化为以下

pkgname="SSH MOTD banner"
d=$(date +"%b %d")
result="$(awk -v FS=":" -v d="$d" -v pkg="$pkg_name" '{if($0 ~ date && $0 ~ pkg){sub(/^ */,"",$4);print $4}}' /var/log/test.log)"

最新更新