シェルスクリプト その3 (応用)
Completion requirements
シェルスクリプト応用
演習1
- 次のプログラム count.sh を作成しなさい.
1.このプログラムは常に4桁の数字を1桁ずつ縦に出力する.(つまり先頭が0の場合も,これを表示する)
./count.sh
0
0
0
3
2.このプログラムを実行する度に,出力される数字は1増える.
ヒント1:現在の数字を記憶するために,ファイルへの入出力を行う.ファイルへの入出力にはリダイレクション(>, >>, <) や cat を使用する.
ヒント2:コマンドは if, cat, expr, echo 等を使用する.
ヒント3:割算の余りを計算するには % を使用する
ヒント4:先にデータファイルを作っておくと良いかもしれない
ヒント2:コマンドは if, cat, expr, echo 等を使用する.
ヒント3:割算の余りを計算するには % を使用する
ヒント4:先にデータファイルを作っておくと良いかもしれない
演習2
- 上記のプログラムはファイルをロックしないため,同時にコマンドを実行すると数字を記憶するためのファイルが壊れる可能性がある.
1.ファイルをロック(他のプログラムがファイルを使用中は,ファイルを使用できないようにする)する機能を追加しなさい.
2.ファイルがアンロックされるまで待つには sleep コマンドを使用すると良い.
ヒント1: 演習1のコマンドに加えて,while, sleep, touch, rm を使用する.(sleep, touch に関してはマニュアルで調べる)
ヒント2: touch ファイル : ファイルが無ければ作る.ファイルがあれば,更新日付を更新する.
ヒント3: あるプログラムのファイルロックチェック部分
ヒント2: touch ファイル : ファイルが無ければ作る.ファイルがあれば,更新日付を更新する.
ヒント3: あるプログラムのファイルロックチェック部分
LOCKF=.count.lock
while [ -f $LOCKF ]; do
sleep 1
done
touch $LOCKF
..............
..............
..............
rm -f $LOCKF
Last modified: Friday, 18 April 2014, 5:47 PM