13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自作シェルスクリプトにヘルプやらバージョンメッセージを実装?する面白い方法があった

Last updated at Posted at 2018-11-22

はじめに

これは環境変数などをexportするようなスクリプトを書く場合の方法です 

本題

とあるアプリのシェルスクリプトに個人的に面白いと感じたヘルプやバージョンのメッセージを実装している例があったので,紹介する.(ここに著作権は無いはず...)

その書き方の特徴はメッセージの内容をコメントアウトした状態で利用している点である.

script.sh
export FILENAME=$(basename $0)
## file    : ${FILENAME}
## version : 3.14
#% help info brbrbrbr
case $1 in
  v) # version
    sed -n 's/^##//p' $0 | envsubst | less
esac
実行結果
$ ./script.sh -v
file    : script.sh
version : 3.14

"-v"のオプションをつけたときは,"##"とコメントアウトしている部分が表示される.
そして, FILENAME という環境変数が展開されて出力される.

これの面白い点は

  • コメントアウトされているものを出力で利用している点
  • "envsubst"によって,コメントアウト内の環境変数が展開されて出力する点

この他にもヘルプなどでは別のコメントアウト方法("#%" etc)をすれば,
多種多様なオプションの出力に対応できる.

最後に

普通にスクリプト内のただの変数をsedで表示できる方法がないかなぁ

追記

sed -n 's/^##//p' $0 
より
awk -F' ' '/^##/{print $2}' $0 
の方が理解しやすいか?
13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?