2
a="grep ssh | grep -v grep"
ps -ef | $a | awk '{print $2}'

上記を機能させるにはどうすればよいですか?grep 用語を渡すだけでなく、複数の grep 用語を渡す必要があるセクションがあります。つまり、「term1 | grep term2」を変数として渡す必要があります。

編集:

以下のanother.anon.cowardの回答は私にとって完璧に機能しました。ありがとうございます!

4

2 に答える 2

2

pidプロセスのだけが必要な場合は、 を使用しますpgrep

pgrep ssh

これを次のような bash に入れることができます (a.bash) :

#!/bin/bash
pname=$1
pgrep "$pname"

または、ps -efあなたが書いたように他の目的が必要な場合は、スクリプト内で次のようにするとうまくいくかもしれません:

pname=$1
ps -ef | grep "$pname" | grep -v grep | awk '{print $2}'  # I would personally prefer this

また

ps -ef | eval "$pname" | awk '{print $2}'  # here $pname can be "grep ssh | grep -v grep"

実行する権限を変更します:

chmod a+x a.bash
./a.bash ssh
于 2013-09-24T17:00:07.593 に答える