sql >> データベース >  >> RDS >> Mysql

出力を抑制し、コマンドが成功したかどうかを確認するにはどうすればよいですか?

    更新

    • if ($LASTEXITCODE -eq 0) ... このアプローチは、引き続き外部プログラムで堅牢に機能します。
    • ただし、v7.2より前の実験機能 名前付きPSNotApplyErrorActionToStderr 公式機能になります、if ($?) ... 堅牢にも動作します-この回答 を参照してください 詳細については。

    $LASTEXITCODE -eq 0を使用します $?ではなく ゼロ以外の終了コードを確実に検出するため (通常は信号障害)外部プログラムによって報告されます。

    その後、 *> $nullを使用できます すべての出力を分類的に抑制する そのリダイレクトが$?に与える影響を心配する必要はありません。 :

    mysql -u root --password=mypass -e "show databases" *>$null
    if ($LASTEXITCODE -eq 0) {
      "Hooray!"
    } else {
      "Boo!"
    }
    

    PowerShellのエラーストリームを含むリダイレクトを使用する-明示的に2>を介して または暗黙的に*>を介して -は、そのストリームを介してデータが受信された場合を意味します-外部プログラムを呼び出す場合は、 stderrからの出力を意味します。 -PowerShellは$?を設定します $false

    ただし、外部コンソール/ターミナルプログラムの領域では、stderrはエラーを出力するためだけに使用されるわけではありません。 情報ですが、データではない情報 、ステータス情報など。したがって、stderr出力の存在から失敗を推測することはできません

    外部コンソール/ターミナルプログラムは、終了コードを介してのみ成功ステータスを伝達します。 、PowerShellは自動$LASTEXITCODEに反映します 変数。

    上記から、 $? $falseにすることができます 終了コードが0であっても 、したがって、$LASTEXITCODEとは異なり、信頼できる成功指標ではありません。




    1. MYSQLインジェクションからの良い予防?

    2. OracleのRAW(16)から.NETのGUIDに変換する

    3. エラー1215:ON DELETE SET NULLを使用すると、外部キー制約を追加できません

    4. アクセスエラー番号メッセージルックアップ