アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
RedHat9を使っています。
bashシェルで、コマンドの実行結果を変数にわたすには、どうしたらいいですか?

mpg123でmp3を聞いています。
ターミナルからCtrl+Cを2回入力するのではなしに、スクリプトを走らせるだけで実行をとめたいです。

ps -A | grep 'mpg123'
の実行結果を変数に入れて、killコマンドの引数にその変数をわたせばいいんじゃないかと思ったんですが。

すみません、よろしくおねがいします。

A 回答 (6件)

 killall mpg123



が,簡単だと思います.詳しくは man killall してください.
    • good
    • 0
この回答へのお礼

ありがとうございます。
Simple is best.
killallの存在も知りませんでした。感謝。

お礼日時:2003/06/26 11:17

殺すだけなら#1の方法で。




コマンド実行結果を他のコマンドの引数にする方法は
kill -9 `ps -A | grep 'mpg123'`
``で括ります。

この回答への補足

で、教えて頂いたついでといってはなんですが。
(もう、これの用はすんだのですが、好奇心で)
psの実行結果を、変数に入れることってできるんでしょうか?
とくに変数の扱いに弱いので、ちょっと勉強したいです。

補足日時:2003/06/26 11:19
    • good
    • 0
この回答へのお礼

ありがとうございます。
やりたかったことも実現できましたし、コマンドの実行結果を他のコマンドに渡す方法も勉強になりました。

お礼日時:2003/06/26 11:18

``で括って代入するだけです。



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'`
もちろんオッケーです。
    • good
    • 0

最後にawkをかまして,念のため, grep -v grep をかまして,



proc=`ps -A | grep mpg123 | grep -v grep | awk '{print $1}'`

とかやんないとダメだと思うんだけど …
    • good
    • 0

わたしなら


proc=`ps -A | awk '/[m]pg123/{print $1}'`
かな。
    • good
    • 0

あ、killするとしたら


ps -ax | awk '/[m]pg123/{CMD=sprintf("kill -KILL %s",$1);system(CMD);}'
です。
間違えて、プロセスを大量に起動してしまったときなどに使うことがありますσ(^^;
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!