[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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 終り --------------------------