シェルスクリプト入門|作り方と実行方法をやさしく解説|UNIX Cafe

当ページのリンクには広告が含まれています。
シェルスクリプト入門|作り方と実行方法をやさしく解説|UNIX Cafe

UNIX Cafe | 第13回

ひと仕事ひと関数”でスマートなカフェ運営

目次

はじめに|毎回同じ作業、どうしてますか?

ミナちゃん

ユニ先生、スクリプトが長くなってきました💦
似たような処理を何度も書いてる気がして、ちょっとごちゃごちゃです…。

ユニ先生

ふふっ、いいところに気づいたね。
同じ作業を何度も書くのは、まるで毎回コーヒー豆を一粒ずつ量ってるようなものさ。効率を上げるには、“関数”を使うんだよ。

関数を作って使ってみよう!

ミナちゃん

関数? 数学みたいですね? 

ユニ先生

そうそう。
「ひと仕事」をひとまとまりにしておけば、何度でも呼び出せるんだ。
まるでカフェの“レシピカード”みたいなものさ。

ミナちゃん

“レシピカード”ですか? それなら分かりやすいです。
どうやって書くんですか?

ユニ先生

関数の書き方はシンプルだよ。「関数名 { … }」で囲むだけ。
じゃあ、カフェ風の例を見てみよう。

コーヒーを淹れる関数を作る

#!/bin/bash

brew_coffee() {
    echo "☕ コーヒーを淹れています..."
    sleep 1
    echo "☕ 出来上がりました!"
}

echo "おはようございます!"
brew_coffee
brew_coffee
echo "今日もいい香りです✨"
ミナちゃん

うわぁ〜! 呼ぶたびに同じ動作をしてくれるんですね!
これなら「コーヒー淹れスクリプト」をいくらでも再利用できます。

ユニ先生

関数は“ひと仕事の定義”。
スクリプトの中で同じ作業をくり返すときに、とっても便利なんだ。

引数を使ってみよう

ミナちゃん

同じ関数でも、種類を変えて淹れたいときはどうすればいいですか?

ユニ先生

いい質問だね。そんなときは“引数”を渡せばいいんだ。
これで1つの関数を、いろんな目的で使いまわせるんだよ。

引数でコーヒーの種類を変える

#!/bin/bash

brew_coffee() {
    echo "$1 コーヒーを淹れています..."
    sleep 1
    echo "$1 コーヒーが出来上がりました!"
}

brew_coffee ブレンド
brew_coffee カフェラテ
brew_coffee エスプレッソ
ミナちゃん

すごいっ! 呼ぶたびに違うコーヒーが出てきます!
これ、ほんとにカフェの注文システムみたいですね。

ユニ先生

ふふっ、そうなんだ。
同じ“道具”を少し工夫するだけで、スクリプトがぐんと柔軟になるんだよ。

Try it!|自分の関数を作ってみよう

  • 関数を定義して、「おはよう」メッセージを出す
  • 引数を受け取って、好きな飲み物を表示する
  • 複数の関数を組み合わせて、“一日のカフェスクリプト”を作る

カフェの1日を自動化する

#!/bin/bash

open_cafe() {
    echo "🌅 カフェを開けます!"
}

brew_coffee() {
    echo "$1 を淹れています..."
    sleep 1
    echo "$1 の出来上がり!"
}

close_cafe() {
    echo "🌙 カフェを閉めます。おつかれさまでした☕"
}

open_cafe
brew_coffee モーニングブレンド
brew_coffee カフェラテ
close_cafe
ミナちゃん

わぁ〜! 朝から夜まで自動でカフェが動いてるみたいです。
もうスクリプトというより“カフェスタッフ”ですね!

ユニ先生

ふふっ、まさにそれさ。
関数を使えば、スクリプトがチームのように働いてくれるんだ。

コーヒーブレイク:ユニ先生のひとこと

いいバリスタは、手順が整理されてる。いいスクリプトもね。
“ひと仕事ひと関数”で、今日もスマートにいこう。

ページのまとめ

  • 関数の定義 function_name() { … }
  • 関数の呼び出し function_name
  • 引数の利用 $1, $2, …
  • 再利用性UP 同じ処理をまとめて呼び出す
ミナちゃん

今日は“ひと仕事ひと関数”の大切さがわかりました!
これで長いスクリプトも見やすくなりそうです。

ユニ先生

いいねぇ。
関数を使うと、スクリプトは“整理されたカフェ”みたいに気持ちよく動くんだ。
同じ作業を何度も書かなくていいって、ほんとに楽だよ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次