こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

コマンドの実行結果が最初の1単語しか表示されない(sh)

コマンドの実行結果によって条件分岐をしたいのに、
実行結果が一部しか得られず、うまくいきません。

やりたいことは非常に単純で以下だけです。

(1)service httpd status を実行し、
(2)running と言う文字が含まれていれば 「good」 と表示する。
(3)含まれていなければ 「bad」 と表示する。

しかし、例えば以下を実行すると

#!/bin/bash
A=(`service httpd status`)
echo $A

実行結果の最初の1単語「httpd」としか表示されず、
条件分岐に使えません。

コマンドラインから直接 service httpd status と打つと、

httpd (pid 32506 32505 ) is running..

のように表示されます。

どなたか、さらさらっとサンプルをご提示頂けましたら
大変嬉しいです。どうぞ宜しく御願いいたします。

投稿日時 - 2008-10-26 01:04:33

QNo.4430055

すぐに回答ほしいです

質問者が選んだベストアンサー

A=(a b c) だと、Aが配列になり、A[0]=a A[1]=b A[2]=c ということですが、
配列に対して$Aというのは${A[0]}の省略形で先頭の要素を表します。全要素が必要なら ${A[*]} で。
ただ、この場合、配列にする意味があるのかどうか・・・何故 A=`service httpd status` じゃないのでしょうか?

書かれた内容だけで良いのなら、
if service httpd status | grep running >/dev/null
then echo good
else echo bad
fi
ですね。
ただ、service httpd statusは/var/run/httpd.pidというファイルがあるかどうか見ているはずなので、
if test -f /var/run/httpd.pid
then echo good
else echo bad
fi
でも良いです。

投稿日時 - 2008-10-26 02:54:03

お礼

>何故 A=`service httpd status`じゃないのでしょうか?

まったくその通りですね。。A=`service httpd status` で
うまくいきました。

頂いたサンプルも完璧に動作しました。
ありがとうございました。

投稿日時 - 2008-10-26 03:38:35

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-