Shellの基礎知識(入門編)

【Shell入門】アンケート集計スクリプトを作ろう

Shellスクリプトの基本操作を一通り学んできたあなたへ、いよいよ総仕上げです。今回は、入力と集計の要素を組み合わせて「アンケート集計スクリプト」を作成していきます。これまで習ったif文・for文・関数などの知識を実際に活かしながら、動くミニアプリを完成させましょう。

Shellの基礎知識

🟡 Shell の基礎知識(入門編)
📌 「動かす楽しさ」を最短で体感!Shellの第一歩をここから。

├─【Shell入門①】VSCode+WSLでShellを始めよう! 
├─【Shell入門②】echoで文字を表示してみよう 
├─【Shell入門③】変数を使って計算しよう 
├─【Shell入門④】条件分岐(if文)で処理を分けよう 
├─【Shell入門⑤】ループ処理(for文)を使ってみよう 
├─【Shell入門⑥】関数で処理をまとめてみよう 
└─【Shell入門⑦】アンケート集計スクリプトを作ってみよう 

🟡 Shell の基礎知識(基礎編)
📌 条件分岐やループなど、実務で通用する基本操作を網羅。

🟡 Shell の基礎知識(実践編)
📌 現場レベルの自動化スクリプトを実装しながら学ぶ実戦形式。

どんなスクリプトを作るのか?

これまで学んだShellスクリプトの構文を活かして、今回は実際に動く「アンケート集計スクリプト」を作ってみましょう。総仕上げとして、ユーザーの入力を受け取り、集計・出力までを一通り体験できる内容になっています。

今回のゴールと仕様イメージ

今回は、これまで学んだShellスクリプトの要素を使って「アンケート集計ツール」を作っていきます。複雑な仕組みは使わず、初心者でも実装できるよう、段階的に進めていきます。

ビープロ
じゃあルーキー、今回はちょっとした「アンケート集計ツール」を作ってみるよ。
えっ、いきなり実用的なやつですか!?できるかな…?
ルーキー
ビープロ
大丈夫。今までのif文やfor文、変数の使い方を復習しながら一緒に組み立てよう。

使用する構文と復習ポイント

このスクリプトでは、以下のような構文を使用します。すべてこれまでの記事で登場済みなので、実際に使って復習しましょう。

  • 変数の定義と代入
  • readコマンドによる入力
  • 条件分岐(if文)
  • ループ(for文)
  • 関数定義と呼び出し

ルーキー
わ、復習項目いっぱい…。ちゃんと覚えてるかなぁ…。
ここまで読んできたビープロ読者なら大丈夫。むしろ、復習しながら動くスクリプトを完成させられる絶好のチャンスだよ。
ビープロ

スクリプトを段階的に作ってみよう

いきなり全体を作るのではなく、ステップごとに一つひとつ積み上げていきましょう。シンプルな構文の組み合わせで、ちゃんと動くスクリプトが完成します。

Step1:ユーザーからの入力を受け取る

まずは、アンケートに答える「名前」をユーザーに入力してもらう部分を作ります。 readコマンドでターミナルからの入力を受け取り、変数に格納します。

ビープロ
まずはアンケートに答える「ユーザー名」を聞いてみよう。
おおっ、名前を入力させるってことですね!どうすれば?
ルーキー
ビープロ
readコマンドを使えばOK。以下のように書けば、ユーザーから入力を受け取れるよ。

echo "あなたの名前を入力してください:"
read username

Step2:選択肢を表示し、選ばせる

次に、「好きなフルーツは?」という質問を表示して、ユーザーに選んでもらいます。メニューを表示して、if文で分岐処理を行いましょう。

ルーキー
選ばせるって、メニューとか番号で選ぶ形式ですか?
そのとおり。echoで選択肢を並べて、readで入力を受け取って、if文で判定するよ。
ビープロ

echo "好きなフルーツを選んでください:"
echo "1. りんご"
echo "2. みかん"
echo "3. バナナ"
read choice

Step3:回答を集計し、ループで繰り返す

複数のユーザーから回答をもらう想定で、for文を使って処理を繰り返します。選ばれたフルーツごとにカウントを加算していきましょう。

ルーキー
なるほど、同じ処理を何回も繰り返すって感じですね。
そうそう!たとえば3人分のアンケートを取るなら、for文で3回まわすように書くといいよ。
ビープロ

for i in 1 2 3
do
  echo "---- $i人目の入力 ----"
  # 名前と選択肢を入力させる処理を書く
done

スクリプトとして形にしよう!

これまで分割して作ってきた処理を1つのスクリプトにまとめて、実際に実行してみましょう。動くスクリプトが完成すると、自分の手で作った実感が湧いてきます。

全体の流れを一つにまとめよう

入力、選択肢の表示、集計といった処理を関数として整理し、全体の流れをひとつのスクリプトファイルにまとめます。

ルーキー
ここまでバラバラだったやつを、まとめて1つにするってことですね?
そうだね。読みやすさを意識して、関数単位で整理するとメンテナンスも楽になるよ。
ビープロ

#!/bin/sh
askName() {
  echo "あなたの名前を入力してください:"
  read username
}

askFruit() {
  echo "好きなフルーツを選んでください:"
  echo "1. りんご"
  echo "2. みかん"
  echo "3. バナナ"
  read choice
}

collectAnswers() {
  apple=0
  orange=0
  banana=0
  for i in 1 2 3
  do
    echo "---- $i人目の入力 ----"
    askName
    askFruit
    if [ "$choice" = "1" ]; then
      apple=$((apple + 1))
    elif [ "$choice" = "2" ]; then
      orange=$((orange + 1))
    elif [ "$choice" = "3" ]; then
      banana=$((banana + 1))
    fi
  done
}

showResult() {
  echo "=== 結果発表 ==="
  echo "りんご: $apple 人"
  echo "みかん: $orange 人"
  echo "バナナ: $banana 人"
}

collectAnswers
showResult

ルーキー
この「#!/bin/sh」ってやつ、何ですか?
これは「シバン」と呼ばれていて、このファイルがどのプログラムで動くかを指定するんだ。今回はShellで動かすから「sh」って書いてるんだよ。
ビープロ
ルーキー
へー、そういう決まりがあるんですね。
うん、今後複雑なスクリプトを作るときにとても大事になってくるよ。
ビープロ

一番上の #!/bin/sh は「このスクリプトはShellで実行します」という宣言です。
この行があることで、ファイルに実行権限をつければ、ターミナル上で ./survey.sh のようにファイル名だけで実行できるようになります。( ./は「今いる場所にあるファイル」を指定する相対パスです)

ターミナルまたはVSCodeで実行してみよう

このスクリプトは、どちらでも動かせます。VSCodeで編集して、ターミナルで実行してもよいですし、直接ターミナルで編集・実行しても問題ありません。

ルーキー
VSCodeじゃないとダメってことじゃないんですね?
うん、ターミナルだけでも十分実行できるよ。でもVSCodeを使えば、将来的にプラグインを導入してデバッグやコード補完もできるようになるから、複雑なスクリプトを書くときにかなり便利なんだ。
ビープロ

sh survey.sh

今回のスクリプトは、Shellスクリプトの基本構文を実践的に学ぶことを目的としたサンプルです。 実際の業務や現場で使用するには、エラーハンドリングやファイル出力などの拡張が必要になりますが、それらはあえて省略しています。 あくまで「動かす体験」を通じて、理解を深めてもらうことを優先しています。 より実用的な形にカスタマイズするのは、ぜひあなた自身の手でチャレンジしてみてください。

まとめと次のステップへ

ここまでの記事では、Shellスクリプトの基本要素を一つずつ学びながら、最終的にアンケート集計プログラムを作るところまでたどり着きました。このセクションでは、これまでの内容を振り返りつつ、今後どのように学習を進めていけば良いかを案内します。

Shellスクリプトでできることの広がり

ここまでの入門編を通して、Shellスクリプトで変数・条件分岐・ループ・関数といった基本要素を使いこなす流れを学んできました。

今回のアンケートスクリプトはあくまで学習目的のサンプルであり、実用性を重視して作られたものではありません。必要に応じて、入力値のチェックやエラー処理を追加するなど、実用的にカスタマイズしていくのはあなたの役目です。

ただし、これだけでも「ユーザーからの入力を受け取り」「処理して」「出力する」基本の流れはバッチリ身についたはずです。

基礎知識編でさらに理解を深めたい方へ

もし「もっと本格的なShellスクリプトを書いてみたい!」と感じた方は、次のステップとして Shellの基礎知識シリーズ(基礎編) をチェックしてみましょう。より実践的な構文、設計の考え方、現場で使えるノウハウなどを網羅しています。

入門編で得た成功体験を活かしながら、少しずつステップアップしていきましょう。

入門編を最後まで読み終えたあなたは、Shellの基礎力がしっかり身についてきています。
次は「基礎知識シリーズ」で、if文やfor文の応用・Shell設計書の考え方など、もう一歩深い実践へ進んでみましょう!

▶ Shellの基礎知識(基礎編):Shellスクリプト入門|初心者が押さえる基本

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Shellの基礎知識(入門編)