シェルスクリプトのフォーマッターshfmtをDockerで動かす
こんにちは。プログラマのまるりんです。
シェルスクリプトのフォーマッターshfmtを紹介します。 shfmtをDockerで動かしてみます。 以下の特に意味のないスクリプトがフォーマット対象です。 どの程度フォーマットされるのかを確認するためにcase、func、リダイレクトを使っています。
#!/bin/sh
echo 'hello'
echo 'world'
func() {
echo 'hello'
echo 'work'
}
func
case $# in
0)
echo 'no arg'
;;
*)
echo 'arg'
;;
esac
ls>hoge.txt
それではフォーマットしてみます。
$ docker run --rm -v $(pwd):/mnt -w /mnt mvdan/shfmt:latest-alpine -i 2 -sr -w sample.sh
フォーマット後は次のように整形されました。
#!/bin/sh
echo 'hello'
echo 'world'
func() {
echo 'hello'
echo 'work'
}
func
case $# in
0)
echo 'no arg'
;;
*)
echo 'arg'
;;
esac
ls > hoge.txt
オプションの説明です。
- Docker
-w
: ワーキングディレクトリの指定
- shfmt
-i <number>
: インデントをスペース何個分で指定するか-sr
: リダイレクト演算子の後にスペースを入れる-w
: 上書き保存
シェルスクリプトがきれいにフォーマットされてかなりよい感じです(case、func、リダイレクトの部分も整えられています)。 お恥ずかしながらシェルスクリプトのフォーマッターの存在を知らなかったので今後は頻繁に使用していきたいです。