シェルスクリプト(基本実習)

シェルスクリプト(基本実習)
シェルスクリプトの基本文法の理解を深めるために練習問題を行います。実際にシェルスクリプトを作成して実行結果を確認してください。

【練習00】exec00.sh
入力された2つの整数値を変数に格納して、掛け算した結果を表示させます。

○実行例
$ ./exec00.sh
二つの整数値を入力してください
整数値s1:15
整数値s2:2
s1*s2=30


【練習01】exec01.sh
入力された文字を変数に格納して、メッセージとして表示させます。

○実行例
$ ./exec01.sh
Enter your Name?MITSUYA
Hello MITSUYA. Good Luck!!
※キーボードから1行でスペース区切りで複数入力することも可能です(read name id number)


【練習02】exec02.sh
入力された文字(y/n)により処理を分岐して、メッセージを変更し表示させます。大文字での入力(Y/N)も可能なようにします。

○実行例
$ ./exec02.sh
Type Your Answer [y/n]y
Input:Yes
$ ./exec02.sh
Type Your Answer [y/n]n
Input:No
$ ./exec02.sh
Type Your Answer [y/n]qwd
input:qwd



【練習03】exec03.sh
while-do文を使い、選択式メニューを表示して入力された数値に対応する処理を実行させます。

○実行例
$ ./exec03.sh
MENU:
1) List file
2) Show current directory
3) User information
4) Exit
1
Amari.class                      Code360.java      LeapYear.java
Amari.java                       Code38.class      LoanSim.class
ArrayMax                         Code38.java       LoanSim.java
MENU:
1) List file
2) Show current directory
3) User information
4) Exit
2
/home/guest
MENU:
1) List file
2) Show current directory
3) User information
4) Exit
3
uid=1000(guest) gid=1000(guest) groups=1000(guest)
MENU:
1) List file
2) Show current directory
3) User information
4) Exit
4
$


【練習04】exec04.sh
for-do文を使い、1週間の間で忙しかった曜日を(y/n)で入力し、忙しかった日数の合計を表示させます大文字での入力(Y/N)も可能なようにします。

○実行例
$ ./exec04.sh
月曜日は忙しかったですか?(y/n)
Y
火曜日は忙しかったですか?(y/n)
y
水曜日は忙しかったですか?(y/n)
n
木曜日は忙しかったですか?(y/n)
N
金曜日は忙しかったですか?(y/n)
y
土曜日は忙しかったですか?(y/n)
y
日曜日は忙しかったですか?(y/n)
y
5日、忙しい日がありました。
$


【練習05】exec05.sh
if文を使い、入力された値を100未満、100以上1000未満、1000以上かを判断し「100未満です」、「100以上1000未満です」、「1000以上です」のいずれかを表示させます。

○実行例
$ ./exec05.sh
数値を入力
0
100未満です
$ ./exec05.sh
数値を入力
100
100以上1000未満です
$ ./exec05.sh
数値を入力
1000
1000以上です


【練習06】exec06.sh
while-do文を使い、入力された値をデクリメントしながら表示し、5になった時点で終了させます。「5」未満の入力はエラーメッセージを表示させます。

○実行例
$ ./exec06.sh
5以上の数値を入力してください
3
5以上の数値ではありません。
$ ./exec06.sh
5以上の数値を入力してください
10
出力
10
9
8
7
6
5
終わり


【練習07】exec07.sh
whileーdo文を使い、入力された値の数だけ-を表示させます。10毎に+でスケールを表示させます。

○実行例
./exec07.sh
スケールのサイズ:50
---------+---------+---------+---------+---------+


【練習08】exec08.sh
whileーdo文を使い、入力された値を底辺とする三角形を*で表示させます。

○実行例
$ ./exec08.sh
底辺の星の数:10
*
**
***
****
*****
******
*******
********
*********
**********

○ヒント(C言語による実装)


【練習09】exec09.sh
乱数を変数に格納し、入力された値と比べて「大きい」「小さい」「正解」のメッセージを表示させます
※乱数の格納は次のようにします。num=`expr $RANDOM % 10`

○実行例
$ ./exec09.sh
数当てゲーム
0~9の数値を入力してください
0
もっと大きい
0~9の数値を入力してください
1
もっと大きい
0~9の数値を入力してください
2
正解!2でした


【練習10】exec10.sh
forーdo文を使い、入力された値の数だけ-を表示させます。10毎に+でスケールを表示させます。

○実行例
$ ./exec10.sh
スケールのサイズ:30
---------+---------+---------+


【練習11】exec11.sh
forーdo文を使い、入力された値を底辺とする三角形を*で表示させます。

○実行例
$ ./exec11.sh
底辺の星の数:10
*
**
***
****
*****
******
*******
********
*********
**********