標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

昔の Go は exit status が fmt.Errorf("exit status %d",ERRORLEVEL) で返ってきたような

Go 1.12 で、実行したプロセスの ERRORLEVEL を得るためのメソッド:"os".ProcessState.ExitCode() が追加されたので、対応の準備をすすめていて気づいたのだけれども…

昔の Go言語だと、0 以外の ERRORLEVEL を受け取ると、"os/exec".Cmd.Run()fmt.Errorf("exit status %d",(ERRORLEVEL値) ) みたいな error を返していたように思うんだけど、1.11~だと、そういう挙動が見られなくなった。

いつ、どうして変わったんだろう… golang の issue を検索したが、数が多すぎて分からん汗

それなりに便利だったので、NYAGOS では、その error をそのまま表示していたんだけれども、いつの間にはそういう挙動がなくなってしまった。 バッチファイル実行の際のコードが EXE ファイル実行の時の挙動に合わせて ERRORLEVEL 値を表示するような形になっていたので、今度は逆に EXE ファイル実行の際の挙動も古い挙動に合わせて、わざわざ「exit status %d」と表示するように修正した。

挙動が変わった原因については、暇を見て、おいおい調べよう(続く…かな?)

(追記)

タイトルとか間違えちゃった。

(旧) 昔の Go は exit status が errors.Fmt("exit status %d",ERRORLEVEL) で返ってきたような

(新) 昔の Go は exit status が fmt.Errorf("exit status %d",ERRORLEVEL) で返ってきたような