AIにコードを書いてもらう際、最も重要なのは「AIが生成したコードに致命的なミスがないか」や「意図しない削除コマンドが含まれていないか」を判断する力です。
シェルスクリプト(特にBash)を理解する上で、最低限押さえておきたい30個の要素をカテゴリー別にまとめました。
1. 基本ルールと変数
- シバン (#! /bin/bash): スクリプトの1行目に書き、どのシェルで実行するかを指定します。
- 変数代入 (NAME="Value"):
=の前後にスペースを入れてはいけないという独特のルールがあります。 - 変数の参照 ($NAME): 変数の中身を呼び出すときは頭に
$をつけます。 - 波括弧での保護 (${NAME}_suffix): 変数名と続く文字列を区別するために使います。
- クォーテーションの使い分け: *
"(ダブル): 変数を展開する。 '(シングル): 文字列としてそのまま扱う(変数を展開しない)。
2. 特殊変数(実行時の情報)
- 引数 ($1, $2...): スクリプト実行時に渡された値。
- 全引数 ($@): 渡されたすべての引数。
- 引数の個数 ($#): 何個のデータが渡されたか。
- 終了ステータス ($?): 直前に実行したコマンドが成功したか(0なら成功)。エラーハンドリングに必須です。
3. 条件分岐と比較
- if 文:
if [ 条件 ]; then ... fiの基本構造。 - test コマンド ([ ]): 条件式を評価するパーツ。前後にスペースが必要です。
- 数値比較:
-eq(等しい),-ne(等しくない),-lt(より小さい) など。 - 文字列比較:
==(等しい),-z(空である)。 - ファイルチェック:
-f(ファイルが存在するか),-d(ディレクトリか)。 - 論理演算:
&&(AND / 成功したら次へ),||(OR / 失敗したら次へ)。
4. ループと反復処理
- for 文:
for f in *.txt; do ... doneのようにリストを処理します。 - while 文: 条件が満たされている間ループします。
- seq コマンド:
seq 1 10のように連続した数字を生成します。
5. コマンド置換と計算
- コマンド置換 ($(command)): コマンドの実行結果を変数に代入します(例:
DATE=$(date))。 - 算術演算 ($((1 + 1))): シェル内で簡単な計算を行います。
6. 入出力の制御(ここが一番重要)
- 標準出力のリダイレクト (>): 結果をファイルに書き込む(上書き)。
- 追記リダイレクト (>>): 結果をファイルの末尾に追加する。
- 標準エラー出力のリダイレクト (2>): エラーメッセージだけを別ファイルに送る。
- パイプ (|): 前のコマンドの結果を次のコマンドに渡す。
- ヒアドキュメント (<<EOF): 複数行のテキストをまとめてコマンドに渡す。
7. 便利な組み込みコマンド・機能
- exit: スクリプトを途中で終了させる。
- read: ユーザーからのキーボード入力を受け取る。
- set -e: 「エラーが出たら即座にスクリプトを止める」という安全設定。
- source (.): 別の設定ファイルやスクリプトを読み込む。
- alias: 長いコマンドに短い別名をつける。