- ベストアンサー
"echo off"の動きをLinuxのシェルスクリプトで実現
こんにちは。 現在、Linux(RHEL5)にてシェルスクリプトを組んでいるのですが、 質問があります。 以下のように"rpm -e"を組んで実行した場合、 パッケージB.rpmが存在しない場合、 画面に「エラー:パッケージBpacはインストールされていません」 と表示されてしまいます。 echo "****** Bpacの削除をしています ******" rpm -e Bpac 画面にエラーを表示させたくないのですが、 どのようにすれば良いのでしょうか? (Windowsのecho offのようなものはありませんか?) なお、出だしのecho文(Bpacの削除をしています)は表示させたいのです。 何か方法はないでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
/bin/sh をお使いでしたら, rpm -e Bpac 2>/dev/null でどうでしょうか。エラー時に何かしたい場合は, if rpm -e Bpac 2>/dev/null; then # エラーじゃないときの処理 else # エラーのときの処理 fi という感じです。
その他の回答 (1)
- saaya_holic
- ベストアンサー率23% (46/195)
補足に対する補足。 コマンド自体が出すメッセージではなくシェルが出すメッセージは 2>/dev/null で消すことはできませんが、その行全体をサブシェルにしてしまえば 全体に 2>/dev/null をつけることで表示されなくできます。 ( #エラーメッセージを出したくない行 ) 2>/dev/null
お礼
ありがとうございます! 実際に行ってみたところ、エラーメッセージを消すことができました。 シェルスクリプトとはいえ、 色々と奥が深いのですね・・・。勉強になります
補足
ありがとうございます! 無事にエラーメッセージを消すことができました。 2>/dev/null はてっきり、外部シェルを起動する場合のみしか利用できないと思っていました。 ところで、 2>/dev/nullは、 コマンド単位ではさすがに指定できませんよね? 例えば、 chcon -R -t textrel_shlib_t /opt/AAAAAlib のような、コンテキストの変更を行う場合、 変更対象が画面にずらっと表示されてしまいます。 これらの表示を消す場合、 やはり、このコマンドのみを記述したシェルを別途外だしにし、 2>/dev/nullしかないのでしょうか?