如何偵測 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 語句中添加第二個括號時,即使在我之前用頭撞牆 10 個小時之後,一切都開始起作用了。謝謝大家!

相關內容