如何在 shell 脚本中读取文件

How to read a file in shell script

我是 shell 脚本的新手。我正在尝试脚本。

我有一个日志文件,每分钟保存一次数据。该脚本需要检测该日志文件中的关键字,如果该关键字存在的话。

我正在尝试如下:

read jeeva/sample/logs.txt
grep keyword

我知道我的脚本很愚蠢。请帮我解决这个问题。

这会将文件读入变量

some_var=$(cat jeeva/sample/logs.txt)

但你不需要那样做。您只想检查单词 "keyword",因此您可以

grep keyword jeeva/sample/logs.txt

在脚本中,如果找到,则 $? 将等于 0,否则将等于 1

所以你可以这样做:

grep keyword jeeva/sample/logs.txt
if ! [[ $? ]] 
then 
    echo found 
else
    echo "not found"
fi

我想您只需要监视一些标记的日志消息。 怎么样:

tail -fn 1000 youFile.log | grep yourTag

Tail 在这种情况下似乎更好,因为您不需要重新运行它。

如果你需要脚本试试这个:

#!/bin/bash

while IFS='' read -r line || [[ -n "$line" ]]; do
    if [[ $line == *""* ]]; then
        echo "Do sth here.";
        echo "Like - I've found: $line";
    fi
done < ""

$1 是一个文件 $2 是你的标签

➜  generated ./script.sh ~/apps/apache-tomcat-7.0.67/RUNNING.txt UNIX
Do sth here.
Like - I've found:     access to bind under UNIX.

也许你想这样写

$ if grep -q keyword jeeva/sample/logs.txt; 
  then echo "found"; 
  else echo "not found"; 
  fi

-q选项是找到关键字时抑制输出。