0

我对 Shell Bash 脚本很陌生,并且正在为一个命令先搜索数据库然后报告任何不正确的条目而碰壁。

数据库应该只包含条目 A、B、C,但是我可以找到使用的唯一方法,如果让 Shell 报告使用 X、Y 的那些。

问题是X,Y不断变化。

这是我目前拥有的一个例子。


MAILADDR="me@yahoo.com"

# Look for a database table entry with X and add to a txt file

find /var/lib/mysql -type f -name '*configuration.MYD' -print0 | xargs -0 grep -il 'X' > /root/output_search_results1.txt

# Look for a database table entry with Y and add to a txt file

find /var/lib/mysql -type f -name '*configuration.MYD' -print0 | xargs -0 grep -il 'Y' > /root/output_search_results2.txt

# IF X file was populated then email it.

if [ -s /root/example_search_results1.txt ]
then
        mutt -s "Which database list example X" $MAILADDR < /root/example_search_results1.txt
        rm -f /root/example_search_results1.txt

fi

# IF Y file was populated then email it.

if [ -s /root/example_search_results2.txt ]
then
        mutt -s "Which database list example Y" $MAILADDR < /root/example_search_results2.txt
        rm -f /root/example_search_results2.txt

fi

问题:X 和 Y 经常变化,所以我希望脚本仅在条目不等于 A、B 或 C(已修复)时报告,然后将其输出到通过电子邮件发送给我的 txt。

我确实希望有人可以提供帮助

祝你有美好的一天。

4

1 回答 1

0

我认为您正在寻找 grep 的“-v”选项。

从 grep 手册页:

-v, --invert-match
Invert the sense of matching, to select non-matching lines.

因此,您必须将 grep 命令更改为:

grep -il -v 'A' -v 'B' -v 'C'
于 2013-07-23T13:30:13.137 回答