スクリプト設計

スクリプト設計

Bashスクリプトにオプション引数を実装する:getoptsを使った本格的なツール作成法

Bashスクリプトを作成していると、実行時に「-h(ヘルプ)」「-v(詳細出力)」「-f 」といったオプション引数を渡して動作を制御したくなることがあります。単純に $1 や $2 といった位置パラメータで引数を受け取ることも可能ですが、引...
スクリプト設計

Bashのwhile文とreadコマンド:テキストファイルを1行ずつ安全に処理するスクリプト設計

Bashスクリプトで「CSVファイルやログファイルなどのテキストデータを1行ずつ読み込んで処理する」という要件は、実務で非常によく発生します。この処理を行う際、最も確実で安全な方法が while ループと read コマンドの組み合わせです...
スクリプト設計

Bashにおけるコールバック設計パターンと安全な実装テンプレート

Bash には、他のプログラミング言語のような「関数ポインタ」や「クロージャ」は存在しません。しかし実務では、処理の流れは共通化し、特定の処理だけを差し替えたい場面が頻繁にあります。この記事では、Bash で安全に実装できる コールバック(...
スクリプト設計

再帰関数 ― bashスクリプト設計のもう一つの道

スクリプトを書くとき、私たちはよく「どう回すか」を考えます。けれど、もう一つの道があります。“自分自身を呼び出す”――再帰という設計。Bashでも、再帰を使うことで処理を階層的に整理し、シンプルに表現することができます。今回は、スクリプト設...
スクリプト設計

bashワイルドカード虎の巻:落とし穴とベストプラクティス11選

ワイルドカード(glob)は、bashで最も手軽に「まとめて処理」を実現できる仕組みです。*.log のような1語で、複数ファイルを一気に対象化できる──この便利さは、日々の運用を確実に加速させます。一方で、未一致時に文字列のまま渡ってしま...
スクリプト設計

並列実行パターン|xargs -P / BG+wait

この記事の狙いBash で安全に並列化するための実用パターンを整理します。主役は xargs -P と バックグラウンド実行 & + wait( -n )。NUL 安全、終了コード集約、出力競合回避、レート制御までを“コピペ可”で。前提と対...
スクリプト設計

バッチ運用テンプレ|日次ローテ / ロック / 通知

この記事の狙い日次バッチを安全に回すためのスケルトンを提示します。ポイントは ロック(重複防止)/日付ローテーション(入出力の切替)/失敗時通知。set -Eeuo pipefail 前提、stdout=結果 / stderr=ログの原則で...
スクリプト設計

共通関数ライブラリ|die / log / require / retry / validate

この記事の狙いBash スクリプトで毎回書いている定番関数を、再利用可能な共通ライブラリとしてまとめます。最小機能は die(異常終了)、log(レベル付き stderr)、require(前提コマンド/ファイル検証)、retry(指数バッ...
スクリプト設計

CLI スケルトン|getopts / usage / log / trap

この記事の狙いBash 製 CLI の最小骨格を提示します。getopts によるオプション解析、--help/--version を備えた Usage、レベル付き log、trap による後始末、エラー時の終了コード設計まで、コピペしてす...
スクリプト設計

ワンライナーの分解術|関数化・再利用

この記事の狙い手元のワンライナーを**“使い捨て”で終わらせず**、安全・再利用・テスト可能な小さな関数へ分解する手順を示します。入出力の境界を決め、標準出力=結果/標準エラー=ログ、終了コードの意味、副作用の隔離を徹底します。前提と対象B...
スクリプト設計

NUL 安全の処理系|find -print0 | xargs -0

この記事の狙いファイル名に空白・タブ・改行・ワイルドカードが含まれても壊れない“NUL セーフ”な処理系を作る方法をまとめます。中核は find -print0 ↔ xargs -0、シェル側は read -r -d '' / mapfil...
スクリプト設計

サブシェルの落とし穴|変数消失の防止

この記事の狙いBash でサブシェル(child shell)が暗黙に生まれるパターンを把握し、意図せぬ変数消失・状態未反映を防ぎます。代表的な落とし穴(パイプ・() グループ・コマンド置換・バックグラウンド)を安全な置き換えパターンで解消...
スクリプト設計

ロックと並列安全|flock / PID / 一時DIR

この記事の狙い並列実行される Bash スクリプトで二重起動や同時書き込みを防ぐためのロック設計をまとめます。flock を中心に、PID ファイル、一時ディレクトリロック(mkdir 原子性)、タイムアウト/再試行、**掃除(trap)*...
スクリプト設計

ログ&トレース|PS4 / set -x / syslog

この記事の狙いBash スクリプトの観測可能性を高めるために、ログ(stderr・syslog)とトレース(set -x)を安全・低摩擦で運用する流儀を示します。PS4 でのトレース行フォーマット、BASH_XTRACEFD による出力分離...
スクリプト設計

終了コード設計|失敗の定義と伝播

この記事の狙いBash スクリプトの失敗の定義を明確化し、終了コード(exit status)を一貫して扱えるようにします。0/非0 の基本から、予約コード、関数・パイプライン・サブシェルでの伝播、set -e/pipefail/trap ...