如何在 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

奇怪的是,一切都开始正常工作了,即使之前我花了 10 个小时撞墙,当时我在 IF 语句中添加了第二个括号。所以是的,哈哈。谢谢大家!

相关内容