別のコマンドの戻り値に基づいて、条件付きでgnuメイクファイルでコマンドを実行したいと思います。シェルパイプラインから真を返す
lsmod | grep -q pfc && sudo rmmod pfc
lsmod
によって出力として、モジュールの現在のリストがpfc
が含まれている場合は、それを削除します。
grep
コマンドが失敗した場合(モジュールが存在しない場合)、パイプライン全体がゼロ以外の値を返し、コマンドが失敗と解釈されるという小さな問題を伴いますが、実際はこれが成功しています。
私は最後に; true
を追加するだけで、常に成功させることができますが、rmmod
コマンドの失敗をキャッチしません!
私はsh
の実装でほとんど移植可能ですが、技術的には私がdash
を使用していると思いますので、それはsh
がUbuntuを指しているからです。
:
編集:提案された
単純にNOPのは次のようになります。特に 'rmmod'が失敗した場合、falseを返すが、上記はtrueを返す。 – BeeOnRope
これは、 'set -e'を使用している場合にのみ問題になります。これは、ゼロ以外の終了ステータスがエラーを示していると仮定しているため、悪い考えです。 – chepner
@chepner - 私は 'set -e'を使用していませんが、呼び出しアプリケーション(' gmake')はゼロ以外の戻り値をエラーとして扱います。 – BeeOnRope