• ベストアンサー

"echo off"の動きをLinuxのシェルスクリプトで実現

こんにちは。 現在、Linux(RHEL5)にてシェルスクリプトを組んでいるのですが、 質問があります。 以下のように"rpm -e"を組んで実行した場合、 パッケージB.rpmが存在しない場合、 画面に「エラー:パッケージBpacはインストールされていません」 と表示されてしまいます。 echo "****** Bpacの削除をしています ******" rpm -e Bpac 画面にエラーを表示させたくないのですが、 どのようにすれば良いのでしょうか? (Windowsのecho offのようなものはありませんか?) なお、出だしのecho文(Bpacの削除をしています)は表示させたいのです。 何か方法はないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • michton
  • ベストアンサー率100% (1/1)
回答No.1

/bin/sh をお使いでしたら, rpm -e Bpac 2>/dev/null でどうでしょうか。エラー時に何かしたい場合は, if rpm -e Bpac 2>/dev/null; then   # エラーじゃないときの処理 else   # エラーのときの処理 fi という感じです。

foelinux
質問者

補足

ありがとうございます! 無事にエラーメッセージを消すことができました。 2>/dev/null はてっきり、外部シェルを起動する場合のみしか利用できないと思っていました。 ところで、 2>/dev/nullは、 コマンド単位ではさすがに指定できませんよね? 例えば、 chcon -R -t textrel_shlib_t /opt/AAAAAlib のような、コンテキストの変更を行う場合、 変更対象が画面にずらっと表示されてしまいます。 これらの表示を消す場合、 やはり、このコマンドのみを記述したシェルを別途外だしにし、 2>/dev/nullしかないのでしょうか?

その他の回答 (1)

回答No.2

補足に対する補足。 コマンド自体が出すメッセージではなくシェルが出すメッセージは 2>/dev/null で消すことはできませんが、その行全体をサブシェルにしてしまえば 全体に 2>/dev/null をつけることで表示されなくできます。 (                   #エラーメッセージを出したくない行 ) 2>/dev/null

foelinux
質問者

お礼

ありがとうございます! 実際に行ってみたところ、エラーメッセージを消すことができました。 シェルスクリプトとはいえ、 色々と奥が深いのですね・・・。勉強になります

関連するQ&A