#!/usr/bin/expect -f
ps
ps -ef > test.txt
今、test.txtに特定のキーワードがあるかどうかを確認したい場合はどうすればよいですか?
たとえば、「apache」または「fast」です。
ここでif文を使用できますか?それでは、どのように使用しますか?
答え1
まず、最初のshebang行は目的のスクリプトではありません。シェルの用途は限定的であると予想される。これはその一つではありません。
最初の行は次のようにする必要があります
#!/bin/bash
あなたの場合
それから
ps -ef > test.txt
grep -e fast -e apache test.txt
この単語を含むすべての行を印刷します。
または、ファイルフェーズへの書き込みをスキップして、次のように1行で実行できます。
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
試してみてください