2012年2月18日

[debian-users:55972] シェルスクリプトについての質問です

大坪といいます。
以下の質問がありますので宜しくお願いします。

以下のtest.shに示すシェルスクリプトで、暗号化したUSB接続外付けハードディスクを開いたときに
どの/media/diskが開かれたかを検出しようとしましたが、
"Error !: Can't decide the /media/disk-number."
となってしまいました。
因みにtest.shに示す#sleep 1sのコメントを外すと、どの/media/diskが開かれたかが検出されます。

これは、sleepを挟まない状態では、
/sbin/cryptsetup luksOpen /dev/sdc1 sdc1
が実行された後、その処理が完全に終わる前 (どの/media/diskを開いたかが確定される前 ?) に
----decide /media/disk-number----
のシーケンスが始まってしまうためだと私は思いました。

そこで質問です。
(1) どうして前の処理が完全に終わる前に次の処理が始まるのでしょうか ?(基本的な質問で申し訳ありません)
(2) sleepを挟まないでも、どの/media/diskが開かれたかを検出できる、(一般的な) 手法はあるのでしょうか ?

-------------- test.sh ----------------------------
#!/bin/bash

#暗号化したUSB接続外付けハードディスクsdc1を開いたとき、どの/media/disk-numberが
#開かれたかを検出するシェルスクリプト。
#暗号化したUSB接続外付けハードディスクsdc1に、ファイルfileExistsを保存しておき、
#/media/diskから/media/disk-4までスキャンしてfileExistsファイルが存在する
#/media/disk-numberにsdc1が開かれたとする。

/sbin/cryptsetup luksOpen /dev/sdc1 sdc1

#sleep 1s

#----decide /media/disk-number----
if [ -e /media/disk/fileExists ]; then
disk="disk"
elif [ -e /media/disk-1/fileExists ]; then
disk="disk-1"
elif [ -e /media/disk-2/fileExists ]; then
disk="disk-2"
elif [ -e /media/disk-3/fileExists ]; then
disk="disk-3"
elif [ -e /media/disk-4/otipExists ]; then
disk="disk-4"
else
echo "Error !: Can't decide the /media/disk-number."
fi
echo $disk
#----decide /media/disk-number 終り----

umount "/media/"$disk"/"
/sbin/cryptsetup luksClose sdc1

-------------- test.sh 終り --------------------------

投稿者 xml-rpc : 2012年2月18日 15:22
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/108672
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。