[ 岡山大学 | 理学部 | 地球科学科 | 地球および惑星大気科学研究室 ]

大気科学演習1

数列を表示するスクリプトの解説

数列 \( a_n = n + 2 \) の最初の4項を表示するスクリプト

01  #!/bin/bash
02  n=0
03  while [ $n -lt 4 ]; do
04    n=$(( n + 1 ))
05    a=$(( n + 2 ))
06    echo $a
07  done

実行するスクリプトには行番号など付いていないが,ここに示したものは先頭に行番号を書いた.

スクリプトの01行目はシェルスクリプトのおまじない. 本体は02行目以降である.

コードは前から順番に実行されるので,前から順番に見ていく.

処理01:02行目
変数 n という容れ物に,0 という数字を入れる. 完了したら次の03行目に移動.

処理02:03行目
条件分岐. 変数 n の値が 4 よりも小さいなら,それに続く do と done の間を実行する. 変数 n の値が 4 以上なら,done の次の行に移動する. ここでは,変数 n に 0 が入っている(処理01). 変数 n の値が 4 より小さいので,do と done の間を実行するべく,04行目に移動する.

処理03:04行目
変数 n に n + 1 を入れろ,という命令(シェルスクリプトにおいて,= は右辺の値を左辺に代入する,である). この行に来たとき,変数 n には 0 が入っている(処理01で 0 を入れたあと変更がない)ので,変数 n に 0 + 1 の結果である 1 を入れる. 完了したら次の05行目に移動する.

処理04:05行目
変数 a に n + 2 を入れろ,という命令. この行に来たとき,変数 n には 1 が入っている(処理03)ので,変数 a に 1 + 2 の結果である 3 を入れる. 完了したら次の06行目に移動する.

処理05:06行目
変数 a の中身を表示しろ,という命令. この行に来たとき,変数 a には 3 が入っている(処理04)ので,3 が出力される. 完了したら次の07行目に移動.

処理06:07行目
done は条件が満足されたときに実行される一連の処理の終わりを表す. 一連の処理が終わったので,始まり(03行目)に戻る.

処理07:03行目
この行に戻ってきたとき,変数 n には 1 が入っている(処理03で 1 を入れたあと変更がない). 変数 n の値が 4 より小さいので,do と done の間を実行するべく,04行目に移動する.

処理08:04行目
変数 n には 1 が入っている(処理03で 1 を入れたあと変更がない)ので,変数 n に 1 + 1 の結果である 2 を入れる. 完了したら次の05行目に移動する.

処理09:05行目
変数 n には 2 が入っている(処理08)ので,変数 a に 2 + 2 の結果である 4 を入れる. 完了したら次の06行目に移動する.

処理10:06行目
変数 a には 4 が入っている(処理09)ので,4 が出力される. 完了したら次の07行目に移動.

処理11:07行目
始まり(03行目)に戻る.

処理12:03行目
変数 n には 2 が入っている(処理08で 2 を入れたあと変更がない). 変数 n の値が 4 より小さいので,do と done の間を実行するべく,04行目に移動する.

処理13:04行目
変数 n には 2 が入っている(処理08で 2 を入れたあと変更がない)ので,変数 n に 2 + 1 の結果である 3 を入れる. 完了したら次の05行目に移動する.

処理14:05行目
変数 n には 3 が入っている(処理13)ので,変数 a に 3 + 2 の結果である 5 を入れる. 完了したら次の06行目に移動する.

処理15:06行目
変数 a には 5 が入っている(処理14)ので,5 が出力される. 完了したら次の07行目に移動.

処理16:07行目
始まり(03行目)に戻る.

処理17:03行目
変数 n には 3 が入っている(処理13で 3 を入れたあと変更がない). 変数 n の値が 4 より小さいので,do と done の間を実行するべく,04行目に移動する.

処理18:04行目
変数 n には 3 が入っている(処理13で 3 を入れたあと変更がない)ので,変数 n に 3 + 1 の結果である 4 を入れる. 完了したら次の05行目に移動する.

処理19:05行目
変数 n には 4 が入っている(処理18)ので,変数 a に 4 + 2 の結果である 6 を入れる. 完了したら次の06行目に移動する.

処理20:06行目
変数 a には 6 が入っている(処理19)ので,6 が出力される. 完了したら次の07行目に移動.

処理21:07行目
始まり(03行目)に戻る.

処理22:03行目
変数 n には 4 が入っている(処理18で 4 を入れたあと変更がない). 変数 n の値が 4 以上なので,done の次の行である08行目に移動する.

処理23:08行目
08行目は存在しないので,終了する.




Last Updated: 2023/09/14, Since: 2023/09/14.
This page is generated by Makefile.rd2html.