AIうぉ--!(ai-wo-katsuyo-shitai !)

AIを上手く使ってみせたい!!自分なりに。

AIにシェルスクリプトでコードをすべて書いてもらうにしても、自分でも理解しておいたほうが良い文法を30個教えて。(gemini)

AIにコードを書いてもらう際、最も重要なのは「AIが生成したコードに致命的なミスがないか」や「意図しない削除コマンドが含まれていないか」を判断する力です。

シェルスクリプト(特にBash)を理解する上で、最低限押さえておきたい30個の要素をカテゴリー別にまとめました。


1. 基本ルールと変数

  1. シバン (#! /bin/bash): スクリプトの1行目に書き、どのシェルで実行するかを指定します。
  2. 変数代入 (NAME="Value"): = の前後にスペースを入れてはいけないという独特のルールがあります。
  3. 変数の参照 ($NAME): 変数の中身を呼び出すときは頭に $ をつけます。
  4. 波括弧での保護 (${NAME}_suffix): 変数名と続く文字列を区別するために使います。
  5. クォーテーションの使い分け: * " (ダブル): 変数を展開する。
  6. ' (シングル): 文字列としてそのまま扱う(変数を展開しない)。

2. 特殊変数(実行時の情報)

  1. 引数 ($1, $2...): スクリプト実行時に渡された値。
  2. 全引数 ($@): 渡されたすべての引数。
  3. 引数の個数 ($#): 何個のデータが渡されたか。
  4. 終了ステータス ($?): 直前に実行したコマンドが成功したか(0なら成功)。エラーハンドリングに必須です。

3. 条件分岐と比較

  1. if 文: if [ 条件 ]; then ... fi の基本構造。
  2. test コマンド ([ ]): 条件式を評価するパーツ。前後にスペースが必要です。
  3. 数値比較: -eq (等しい), -ne (等しくない), -lt (より小さい) など。
  4. 文字列比較: == (等しい), -z (空である)。
  5. ファイルチェック: -f (ファイルが存在するか), -d (ディレクトリか)。
  6. 論理演算: && (AND / 成功したら次へ), || (OR / 失敗したら次へ)。

4. ループと反復処理

  1. for 文: for f in *.txt; do ... done のようにリストを処理します。
  2. while 文: 条件が満たされている間ループします。
  3. seq コマンド: seq 1 10 のように連続した数字を生成します。

5. コマンド置換と計算

  1. コマンド置換 ($(command)): コマンドの実行結果を変数に代入します(例: DATE=$(date))。
  2. 算術演算 ($((1 + 1))): シェル内で簡単な計算を行います。

6. 入出力の制御(ここが一番重要)

  1. 標準出力のリダイレクト (>): 結果をファイルに書き込む(上書き)。
  2. 追記リダイレクト (>>): 結果をファイルの末尾に追加する。
  3. 標準エラー出力のリダイレクト (2>): エラーメッセージだけを別ファイルに送る。
  4. パイプ (|): 前のコマンドの結果を次のコマンドに渡す。
  5. ヒアドキュメント (<<EOF): 複数行のテキストをまとめてコマンドに渡す。

7. 便利な組み込みコマンド・機能

  1. exit: スクリプトを途中で終了させる。
  2. read: ユーザーからのキーボード入力を受け取る。
  3. set -e: 「エラーが出たら即座にスクリプトを止める」という安全設定。
  4. source (.): 別の設定ファイルやスクリプトを読み込む。
  5. alias: 長いコマンドに短い別名をつける。