a="grep ssh | grep -v grep"
ps -ef | $a | awk '{print $2}'
上記を機能させるにはどうすればよいですか?grep 用語を渡すだけでなく、複数の grep 用語を渡す必要があるセクションがあります。つまり、「term1 | grep term2」を変数として渡す必要があります。
編集:
以下のanother.anon.cowardの回答は私にとって完璧に機能しました。ありがとうございます!
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