1ファイルのシェルスクリプトで、引数・分岐・繰り返し・関数の基礎を固めます。
想定時間:各5〜8分
1) 変数に代入して表示する
問題:変数 NAME に "Bash" を代入し、「Hello, Bash!」と表示するスクリプトを作ってください。
▶解答例
#!/bin/bash
NAME=”Bash”
echo “Hello, $NAME!”
2) 引数を受け取って挨拶する
問題:スクリプトの第1引数を名前として受け取り、「Hi, ○○!」と表示してください。
▶解答例
#!/bin/bash
NAME=$1
echo “Hi, $NAME!”
3) if 文で条件分岐する
問題:引数に与えた数値が 10以上なら “big”、それ以外は “small” と表示してください。
▶解答例
#!/bin/bash
NUM=$1
if [ “$NUM” -ge 10 ]; then
echo “big”
else
echo “small”
fi
4) for ループで1から5まで出力する
問題:1 から 5 までを for ループで順に出力してください。
▶解答例
#!/bin/bash
for i in 1 2 3 4 5; do
echo $i
done
5) while ループでカウントダウンする
問題:変数 n=3 から 0 まで while ループでカウントダウンして表示してください。
▶解答例
#!/bin/bash
n=3
while [ $n -ge 0 ]; do
echo $n
n=$((n-1))
done
6) 関数を定義して呼び出す
問題:関数 greet を定義し、引数の名前に対して「Welcome, ○○!」と表示してください。
▶解答例
#!/bin/bash
greet() {
echo “Welcome, $1!”
}
greet “Linux”
7) ファイルの存在チェック
問題:引数で受け取ったファイルが存在すれば「found」、なければ「not found」と表示してください。
▶解答例
#!/bin/bash
FILE=$1
if [ -f “$FILE” ]; then
echo “found”
else
echo “not found”
fi
8) 引数で受けた複数ファイルを順に処理
問題:引数で受けたファイル名を for ループで順に表示してください。
▶解答例
#!/bin/bash
for f in “$@”; do
echo “Processing $f”
done
学習のヒント
- 変数展開は
"$VAR"を基本にすると安全 - 条件式は
[ ... ]を使い、数値比較は-ge-eqなど - ループは for / while を使い分け
- 関数は
function name { ... }かname() { ... } - “$@” で「すべての引数」を展開できる
この8問で、シェルスクリプトの基礎文法をひと通り押さえられます。

