0Pricing
DevOps Bootcamp · レッスン

シェル関数と再利用可能なスニペット

Bash関数を定義して使い、コマンドを再利用可能でパラメーター化されたシェル用の構成要素にまとめる方法を学びます。

「シェル関数と再利用可能なスニペット」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

シェル関数を使う理由

シェル関数は複数のコマンドを1つの名前にまとめ、入力し直さずに再利用できるようにします。

  • コマンドをコピー&ペーストするより高速です
  • 長いエイリアスよりも整理されています
  • エイリアスとは異なり、引数を受け取れます
mkcd() {
  mkdir -p "$1" && cd "$1"
}

関数を定義する

最も簡単な形式では name() { ... } 構文を使います。波括弧内のコマンドは、関数名を指定して呼び出したときに実行されます。

greet() {
  echo "Hello from a function"
}
greet

関数の引数

関数はスクリプトと同じように位置パラメーターを受け取ります。$1、$2 などです。$# は個数、$@ はすべての引数に展開されます。

backup() {
  cp "$1" "$1.bak"
  echo "Backed up $1"
}
backup notes.txt

戻り値と終了ステータス

関数は return N(0~255)で終了ステータスを返します。成功や失敗の確認に使い、データを返す用途には使わないでください。

is_root() {
  [ "$(id -u)" -eq 0 ] && return 0 || return 1
}
if is_root; then echo root; else echo normal; fi

echo で出力を返す

return で返せるのはステータスコードだけなので、実際の出力は表示し、$( ) で取得します。

timestamp() {
  date +%Y%m%d-%H%M%S
}
name="log-$(timestamp).txt"
echo "$name"

ローカル変数

デフォルトでは、関数内の変数はグローバルです。local を使うと変数のスコープを関数内に限定でき、シェルを汚染せずに済みます。

count_lines() {
  local n
  n=$(wc -l < "$1")
  echo "$1 has $n lines"
}

引数のデフォルト値

パラメーター展開 ${1:-default} を使うと、引数がない場合にデフォルト値へフォールバックできます。

say() {
  local msg="${1:-Hello World}"
  echo "$msg"
}
say
say "Custom message"

関数とエイリアスの違い

エイリアスは単にテキストを置き換えるだけで、位置引数を適切に受け取ることはできません。関数なら、分岐やループ、入力の処理が可能です。

  • 固定的なショートカットにはaliasを使用します
  • ロジックや引数が必要な場合はfunctionを使用します
alias ll='ls -la'
lt() { ls -la "${1:-.}" | tail -n "${2:-5}"; }

関数を永続化する

プロンプトで定義した関数は、シェルが終了すると消えてしまいます。~/.bashrcに追加すると、すべてのセッションで使用できるようになります。

# Append to ~/.bashrc
extract() {
  case "$1" in
    *.tar.gz) tar xzf "$1" ;;
    *.zip)    unzip "$1" ;;
    *)        echo "Unknown format" ;;
  esac
}

関数の一覧表示と削除

declare -Fは関数名を一覧表示し、declare -f nameは本体を表示します。unset -f nameで関数を削除できます。

declare -F
declare -f greet
unset -f greet

関数を組み合わせる

関数から別の関数を呼び出せるため、小さな再利用可能な処理を組み合わせて、より大きなツールを構築できます。

log() { echo "[$(date +%T)] $*"; }
deploy() {
  log "Starting deploy"
  log "Done"
}
deploy

理解度チェック

シェル関数についての理解度を確認します。

まとめ

再利用可能なシェル関数の作成方法を学びました。

  • name() { ... }で定義し、名前で呼び出します
  • 引数には$1、$@、$#を使用し、ステータスにはreturnを使用します
  • localで変数のスコープを限定し、echoでデータを返します
  • ~/.bashrcに保存し、declare -fで内容を確認します

よくある質問

「シェル関数と再利用可能なスニペット」レッスンは無料ですか?

はい。「シェル関数と再利用可能なスニペット」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「シェル関数と再利用可能なスニペット」で何を学びますか?

Bash関数を定義して使い、コマンドを再利用可能でパラメーター化されたシェル用の構成要素にまとめる方法を学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「シェル関数と再利用可能なスニペット」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ジョブ制御(bg、fg、jobs)
  2. シェル展開とグロブ
  3. エイリアスとカスタムプロンプト
  4. シェル関数と再利用可能なスニペット
← DevOps Bootcampに戻る