- ベストアンサー
bash:あるプロセスをkillするスクリプト
こんにちは。 RedHat9を使っています。 bashシェルで、コマンドの実行結果を変数にわたすには、どうしたらいいですか? mpg123でmp3を聞いています。 ターミナルからCtrl+Cを2回入力するのではなしに、スクリプトを走らせるだけで実行をとめたいです。 ps -A | grep 'mpg123' の実行結果を変数に入れて、killコマンドの引数にその変数をわたせばいいんじゃないかと思ったんですが。 すみません、よろしくおねがいします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
``で括って代入するだけです。 proc=`ps -A | grep 'mpg123'` #2の方法だとmpg123が起動していなかったり複数起動していると問題が起こります。 proc=`ps -A | grep 'mpg123'` for name in $proc do kill $name done; の方が安全ですね。 for name in `ps -A | grep 'mpg123'` もちろんオッケーです。
その他の回答 (5)
- 1Yen
- ベストアンサー率28% (11/39)
あ、killするとしたら ps -ax | awk '/[m]pg123/{CMD=sprintf("kill -KILL %s",$1);system(CMD);}' です。 間違えて、プロセスを大量に起動してしまったときなどに使うことがありますσ(^^;
- 1Yen
- ベストアンサー率28% (11/39)
わたしなら proc=`ps -A | awk '/[m]pg123/{print $1}'` かな。
- astronaut
- ベストアンサー率58% (303/516)
最後にawkをかまして,念のため, grep -v grep をかまして, proc=`ps -A | grep mpg123 | grep -v grep | awk '{print $1}'` とかやんないとダメだと思うんだけど …
- toysmith
- ベストアンサー率37% (570/1525)
殺すだけなら#1の方法で。 コマンド実行結果を他のコマンドの引数にする方法は kill -9 `ps -A | grep 'mpg123'` ``で括ります。
- astronaut
- ベストアンサー率58% (303/516)
killall mpg123 が,簡単だと思います.詳しくは man killall してください.
お礼
ありがとうございます。 Simple is best. killallの存在も知りませんでした。感謝。
お礼
ありがとうございます。 やりたかったことも実現できましたし、コマンドの実行結果を他のコマンドに渡す方法も勉強になりました。
補足
で、教えて頂いたついでといってはなんですが。 (もう、これの用はすんだのですが、好奇心で) psの実行結果を、変数に入れることってできるんでしょうか? とくに変数の扱いに弱いので、ちょっと勉強したいです。