#!/usr/bin/expect -f
ps
ps -ef > test.txt
现在,如果我想检查 test.txt 中是否存在某些关键字,我们该怎么做?
比方说“apache”或“fast”。
这里可以使用if语句吗?如果可以,怎么用?
答案1
首先,第一行 shebang 行不是您想要的脚本。期望 shell 的用途有限,这不是其中之一
第一行应该是这样的
#!/bin/bash
在你的情况下
然后
ps -ef > test.txt
grep -e fast -e apache test.txt
将打印包含这些单词中的任何一个的所有行。
或者您可以跳过写入文件步骤并在一行中执行此操作,如下所示:
ps -ef | grep -e fast -e apache
编辑条件检查:
ps -ef | grep -e fast -e apache | grep -v grep > dev/null; result=${?}
if [ ${result} -eq 0 ]
then
echo "Found one or more occurrences of 'apache' and/or 'fast'"
else
echo "Searched strings were not found"
fi
答案2
你可以在这里声明一个数组
#!/bin/bash
string=('fast' 'apache')
ps -ef > test.txt
for i in "$string[@]"
do
grep "$i" test.txt
done
或者你可以直接在行中执行,ps
只保存那些流程
#!/bin/bash
string=('fast' 'apache')
for i in "$string[@]"
do
ps -ef | grep "$i" > ps_output_of_$i.txt
done
试一下