Bash で「/dev/mapper/dev0」が存在するかどうかを検出するにはどうすればよいですか?

Bash で「/dev/mapper/dev0」が存在するかどうかを検出するにはどうすればよいですか?

すべてのドライブを自動的にマウントして復号化する、NAS 用の復号化ソフトウェアを作成しようとしています。

sudo cryptsetup luksOpen /dev/blahblahblah dev0しかし、開こうとした後に存在するかどうかを知る必要があります。

Bash でそれを検出するにはどうすればよいですか? 試してみました:

if [ -e /dev/mapper/dev0 ]; then

しかし、それはうまくいかなかったようです。誰か何かアイデアはありますか?


コード全体は次のとおりです。

fail="true"
LUKS_PASSWORD1=""
while [ $fail="true" ]; do
 echo -n " Password > "
 read LUKS_PASSWORD1
 echo "";

 for dev in "${!devs[@]}"; do
   echo "Opening ${devs[$dev]} to $dev"
   echo $LUKS_PASSWORD1 | sudo cryptsetup luksOpen $dev ${devs[$dev]} -d - &
 done;
 wait

 if [[ -e /dev/mapper/dev0 ]]; then
   [[ -e /dev/mapper/dev0 ]] && echo "true"
   ssh -i /home/user/.ssh/another-machine [email protected] -t 'play "/images/voices/Shuuten Douji/databasesunlocked.mp3"; wait; exit;';
   fail="false"
 else
   ssh -i /home/user/.ssh/another-machine [email protected] -t 'play "/images/voices/Shuuten Douji/that was incorrect, but please try again.mp3"; wait; exit;';
 fi
done

答え1

試すtest -e /dev/mapper/dev0 && run_some_command

thenその後何が起こり、どのように失敗したかを示していただければ助かります。

答え2

不思議なことに、IF ステートメントに 2 番目の括弧を追加したところ、10 時間も頭を壁にぶつけていたにもかかわらず、すべてが機能し始めました。 ということで、はい、笑。 皆さん、ありがとうございます!

関連情報