
Shellスクリプトの基本操作を一通り学んできたあなたへ、いよいよ総仕上げです。今回は、入力と集計の要素を組み合わせて「アンケート集計スクリプト」を作成していきます。これまで習ったif文・for文・関数などの知識を実際に活かしながら、動くミニアプリを完成させましょう。
Shellの基礎知識
🟡 Shell の基礎知識(入門編)
📌 「動かす楽しさ」を最短で体感!Shellの第一歩をここから。
├─【Shell入門①】VSCode+WSLでShellを始めよう!
├─【Shell入門②】echoで文字を表示してみよう
├─【Shell入門③】変数を使って計算しよう
├─【Shell入門④】条件分岐(if文)で処理を分けよう
├─【Shell入門⑤】ループ処理(for文)を使ってみよう
├─【Shell入門⑥】関数で処理をまとめてみよう
└─【Shell入門⑦】アンケート集計スクリプトを作ってみよう
🟡 Shell の基礎知識(基礎編)
📌 条件分岐やループなど、実務で通用する基本操作を網羅。
🟡 Shell の基礎知識(実践編)
📌 現場レベルの自動化スクリプトを実装しながら学ぶ実戦形式。
どんなスクリプトを作るのか?
これまで学んだShellスクリプトの構文を活かして、今回は実際に動く「アンケート集計スクリプト」を作ってみましょう。総仕上げとして、ユーザーの入力を受け取り、集計・出力までを一通り体験できる内容になっています。
今回のゴールと仕様イメージ
今回は、これまで学んだShellスクリプトの要素を使って「アンケート集計ツール」を作っていきます。複雑な仕組みは使わず、初心者でも実装できるよう、段階的に進めていきます。



使用する構文と復習ポイント
このスクリプトでは、以下のような構文を使用します。すべてこれまでの記事で登場済みなので、実際に使って復習しましょう。
- 変数の定義と代入
- readコマンドによる入力
- 条件分岐(if文)
- ループ(for文)
- 関数定義と呼び出し


スクリプトを段階的に作ってみよう
いきなり全体を作るのではなく、ステップごとに一つひとつ積み上げていきましょう。シンプルな構文の組み合わせで、ちゃんと動くスクリプトが完成します。
Step1:ユーザーからの入力を受け取る
まずは、アンケートに答える「名前」をユーザーに入力してもらう部分を作ります。 readコマンドでターミナルからの入力を受け取り、変数に格納します。



echo "あなたの名前を入力してください:"
read username
Step2:選択肢を表示し、選ばせる
次に、「好きなフルーツは?」という質問を表示して、ユーザーに選んでもらいます。メニューを表示して、if文で分岐処理を行いましょう。


echo "好きなフルーツを選んでください:"
echo "1. りんご"
echo "2. みかん"
echo "3. バナナ"
read choice
Step3:回答を集計し、ループで繰り返す
複数のユーザーから回答をもらう想定で、for文を使って処理を繰り返します。選ばれたフルーツごとにカウントを加算していきましょう。


for i in 1 2 3
do
echo "---- $i人目の入力 ----"
# 名前と選択肢を入力させる処理を書く
done
スクリプトとして形にしよう!
これまで分割して作ってきた処理を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で実行します」という宣言です。
この行があることで、ファイルに実行権限をつければ、ターミナル上で
./survey.sh のようにファイル名だけで実行できるようになります。(
./は「今いる場所にあるファイル」を指定する相対パスです)
ターミナルまたはVSCodeで実行してみよう
このスクリプトは、どちらでも動かせます。VSCodeで編集して、ターミナルで実行してもよいですし、直接ターミナルで編集・実行しても問題ありません。


sh survey.sh
今回のスクリプトは、Shellスクリプトの基本構文を実践的に学ぶことを目的としたサンプルです。 実際の業務や現場で使用するには、エラーハンドリングやファイル出力などの拡張が必要になりますが、それらはあえて省略しています。 あくまで「動かす体験」を通じて、理解を深めてもらうことを優先しています。 より実用的な形にカスタマイズするのは、ぜひあなた自身の手でチャレンジしてみてください。
まとめと次のステップへ
ここまでの記事では、Shellスクリプトの基本要素を一つずつ学びながら、最終的にアンケート集計プログラムを作るところまでたどり着きました。このセクションでは、これまでの内容を振り返りつつ、今後どのように学習を進めていけば良いかを案内します。
Shellスクリプトでできることの広がり
ここまでの入門編を通して、Shellスクリプトで変数・条件分岐・ループ・関数といった基本要素を使いこなす流れを学んできました。
今回のアンケートスクリプトはあくまで学習目的のサンプルであり、実用性を重視して作られたものではありません。必要に応じて、入力値のチェックやエラー処理を追加するなど、実用的にカスタマイズしていくのはあなたの役目です。
ただし、これだけでも「ユーザーからの入力を受け取り」「処理して」「出力する」基本の流れはバッチリ身についたはずです。
基礎知識編でさらに理解を深めたい方へ
もし「もっと本格的なShellスクリプトを書いてみたい!」と感じた方は、次のステップとして Shellの基礎知識シリーズ(基礎編) をチェックしてみましょう。より実践的な構文、設計の考え方、現場で使えるノウハウなどを網羅しています。
入門編で得た成功体験を活かしながら、少しずつステップアップしていきましょう。
入門編を最後まで読み終えたあなたは、Shellの基礎力がしっかり身についてきています。
次は「基礎知識シリーズ」で、if文やfor文の応用・Shell設計書の考え方など、もう一歩深い実践へ進んでみましょう!