シェルのコロン「:」活用術

원제: A shell colon does nothing. Use it anyway

왜 중요한가

POSIX標準のヌルコマンド「:」の実践的活用法の整理は、シェルスクリプトの保守性と可読性向上に寄与する。

Filip Roséenが2026年7月23日に公開した記事で、POSIXシェルのヌルコマンド「:」(コロン)の実用的な活用法を解説した。必須引数チェック、デフォルト値設定、ファイルのトランケート、読み書き権限確認など、1文字で多様な処理が可能なことを具体的なコード例とともに紹介している。

シェルスクリプト開発者のFilip Roséenが、POSIX準拠シェルに存在するヌルコマンド「:」(コロン)の活用法を解説する記事を公開した。

「:」は1971年のThompson shellにまで遡る古いビルトインコマンドで、引数を評価するだけで結果を捨てるという動作をする。この性質を利用することで、複数行のif文を1行に置き換えるなど、簡潔なコードが書ける。

記事が紹介する主なユースケースは以下の通り。

**必須引数チェック**: `${1:?エラーメッセージ}` 構文と組み合わせることで、変数が未設定または空の場合にstderrへメッセージを出力してスクリプトを終了させられる。従来の4行のif文が1行で記述可能になる。

**デフォルト値設定**: `: "${DATA_DIR:=/var/data}"` のように書くことで、変数にデフォルト値をセットしつつ、その値をコマンドとして実行してしまうことを防げる。

**ファイル操作**: `: > error.log` でファイルをトランケート(空に)できる。`( : < dataset.json ) && echo YES` で読み取り権限の確認、`( : >> result.json ) && echo YES` で書き込み権限の確認が可能。

**その他**: `trap : INT` でシグナルを無視する、`set -u` 使用時に複数の変数をまとめてチェックするといった用途にも活用できる。

パラメータ展開構文 `${name:?diagnostic}` は、変数がセットされている場合は `$name` と等価に動作し、未設定または空の場合は診断メッセージを出力して非ゼロ終了する。変数名を使った場合はエラーメッセージに変数名が含まれるため、デバッグが容易になる点も紹介されている。

출처

refp.se — 원문 읽기 →