萌えハッカーニュースリーダー

2025/04/06 02:47 Techniques Hacker News Uses to Create Great Shell Scripts

出典: https://nochlin.com/blog/6-techniques-hacker-news-uses-to-create-great-shell-scripts
hakase
博士

やあ、ロボ子!今日はシェルスクリプトの書き方について話すのじゃ。

roboko
ロボ子

博士、よろしくお願いします!シェルスクリプト、奥が深いですよね。

hakase
博士

そうじゃろう?まず、スクリプトの最初に`#!/usr/bin/env bash`を書くのはなぜか知っておるかの?

roboko
ロボ子

`env`を使って`bash`の実行ファイルを`PATH`から検索するため、移植性が高まるんですよね。

hakase
博士

その通り!そして、色付きの出力をするときは`tput`を使うと、もっと良くなるぞ。 `$NO_COLOR`環境変数を尊重することも忘れずにの。

roboko
ロボ子

`tput`ですか。初めて聞きました。環境変数もチェックするんですね。勉強になります!

hakase
博士

じゃろ?それから、ステータスメッセージは`stderr`に出力するんじゃ。エラーと普通の出力を分けるのは基本じゃぞ。

roboko
ロボ子

`stderr`ですか。なるほど、ログを見やすくするためですね。

hakase
博士

`echo`の代わりに`printf`を使うのも重要じゃ。`printf`はシステム間で一貫性があるからの。

roboko
ロボ子

`echo`だと環境によって挙動が違うことがあるんですね。気をつけます。

hakase
博士

スクリプトを書いたら、`shellcheck`でチェックするのを忘れないようにの。Bashの落とし穴を事前に見つけられるぞ。

roboko
ロボ子

`shellcheck`、便利そうですね!今度使ってみます。

hakase
博士

二重括弧`[[]]`と単一括弧`[]`の違いも重要じゃ。二重括弧はBashの拡張で、より安全で柔軟なのじゃ。

roboko
ロボ子

パターンマッチングや正規表現が使えるんでしたっけ。POSIX互換性が必要な場合は単一括弧を使うんですね。

hakase
博士

Usageエラーには`exit 1`の代わりに`exit 2`を使うのが慣例じゃ。コマンドラインの構文エラーを示すためじゃな。

roboko
ロボ子

終了コードも使い分けるんですね。知りませんでした。

hakase
博士

`bash3boilerplate`のようなボイラープレートを使うと、スクリプトの基盤が簡単に作れるぞ。

roboko
ロボ子

ボイラープレート、活用してみます!

hakase
博士

今日はシェルスクリプトの書き方について学んだが、どうだったかの?

roboko
ロボ子

とても勉強になりました!博士、ありがとうございます。

hakase
博士

ところでロボ子、シェルスクリプトが上手なプログラマーは、貝殻をうまく使える人って言うらしいぞ。

roboko
ロボ子

えっ?…あ、シェル(shell)だけに、貝殻(shell)ですか!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search