ちょっと複雑なシェルスクリプトをGoで書く
良いところ
必要十分な機能やパッケージが標準で含まれており、だいたい依存フリーで書ける
strconvとかstringsとか
os/exec ← 重要
Goroutineやsync, x/syncパッケージのおかげで並行処理が安全に書きやすい 静的型検査があるのでしょうもないエラーが実行前に気付ける
go run $pkg でLLっぽい使い勝手が得られる
その気になれば再配布しやすい
go build したバイナリを配ればよい
クロスコンパイルできるので、cgoとかに注意すればヨシ 気をつけるところ
これは karupanerura さんに教えてもらった karupanerura++
注意すべきはデフォルトだとos/execとの互換のためsigkillが送られる
SIGTERMを送るにはこんなかんじ
code:exec.go
cmd := (&exec.Exec{
KillAfterCancel: -1,
Signal: os.Interrupt,
}).CommandContext(ctx, t.path, t.args...)