スクリプト設計

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 ...
スクリプト設計

入出力とプロセス制御|リダイレクト/パイプ/サブシェル

この記事の狙いBash の入出力(リダイレクト・パイプ)とプロセス制御(サブシェル・並列実行)の基本を、安全運用の観点で設計指針に落とし込みます。「どこへ出すか」「どこから読むか」「どの文脈で実行するか」を明示し、副作用とスコープを可視化し...
スクリプト設計

IFS と read -r の安全読込|空白・改行耐性

この記事の狙いシェルスクリプトでテキストやファイル名を安全に読み込むための定石をまとめます。IFS と read -r を正しく使い、空白・タブ・末尾スペース・末尾改行なし行・NUL 区切りに耐える読み込みを実現します。前提と対象Bash ...
スクリプト設計

パターン・正規表現の使い分け|[[ ]] / extglob / grep -E

この記事の狙いBash スクリプトで条件分岐や文字列判定を行うとき、**「glob パターン」と「正規表現」**が混在しやすく、思わぬバグにつながります。ここでは ] におけるパターン一致と正規表現一致の違いを整理し、extglob を含む...
スクリプト設計

select メニュー入門|対話型選択と入力検証

この記事の狙いBash に組み込まれている select 構文を理解し、インタラクティブな選択肢メニューを最小コストで作れるようにします。単純に使うと「空入力で無限ループ」「不正番号で壊れる」などの罠があるため、入力検証・終了条件・デフォル...
スクリプト設計

クォート戦略と文字列安全化|ダブルクォート前提の指針

この記事の狙いBash の文字列安全化を“場当たり”ではなく一貫した戦略として運用できるようにします。ダブルクォートを原則とし、配列・パラメータ展開・コマンド置換・ヒアドキュメント・read 入力・グロブ/IFS/ロケールとの相互作用を事故...
スクリプト設計

パラメータ展開レシピ|既定値・置換・長さ取得

この記事の狙いBash のパラメータ展開を“暗記”ではなくレシピとして使い回せるようにします。既定値・代入・エラー・置換・切り出し・長さ・前後マッチ除去・大文字小文字変換を、安全なクォート方針とともに整理します。前提と対象Bash 4+(一...
スクリプト設計

ヘルプと Usage 整備|自己説明する CLI

この記事の狙いBash 製 CLI を自己説明型にします。--help と --version、わかりやすい Usage/Options/Examples/Exit codes/Env を常に同じ型で出し、引数エラー時は用法を短く見せる実装...
スクリプト設計

モジュール構成と読み込み|共通ライブラリ化と source

この記事の狙いBash スクリプトを**モジュール(再利用可能な小さなライブラリ)**に分割し、確実に読み込むためのレイアウトと仕組みを示します。source の落とし穴(相対パス、二重読み込み、依存順序、名前衝突)を避け、安全・移植性・見...
スクリプト設計

関数設計パターン集|引数/戻り値の流儀

この記事の狙いBash 関数を**「ただの処理の寄せ集め」**ではなく、再利用可能な部品として設計するためのパターンを整理します。引数の受け方・戻り値の返し方・エラー伝播・副作用の扱いなどを、コピペ可の最小例とともに示します。前提と対象Ba...
スクリプト設計

配列・連想配列の基礎|宣言・走査・安全展開

この記事の狙いBash で配列(indexed array)と連想配列(associative array)を安全に扱えるようにします。宣言・要素追加・走査・長さ取得・存在確認・マージ・削除までをコピペで動く最小実装とともに解説し、クォート...