我有一个BASH脚本,它将使用GRUB创建可启动的USB驱动器。
目前的问题是即使没有插入USB驱动器,脚本也会继续。这将导致用户在没有任何安全措施的情况下继续,特别是如果用户不熟悉命令行。
我想要一个命令来检查输出是sdb,sdc,sdd,sde还是sdf。如果输出与sdb,sdc,sdd,sde或sdf匹配,则脚本将继续。如果输出都不匹配sdb,sdc,sdd,sde或sdf,则脚本将退出。下面的当前命令不起作用。我没有发布所有代码,因为我认为只有这一点很重要。
带引号的命令是检查输出的命令
"if [[ $(lsblk | grep -w "sdb\|sdc\|sdd\|sde\|sdf") ]]; then
echo "No USB drive found. Please insert one."
fi"
echo -e "--------------------------------" | lolcat
echo
lsblk | grep -w "sdb\|sdc\|sdd\|sde\|sdf" | lolcat
echo
echo -e "--------------------------------" | lolcat
echo
echo -e "Which pendrive listed above do you want to install MMI on?" | lolcat
echo
echo -e "Input example:" | lolcat
echo -e "(sdx) without brackets" | lolcat
read -p ":" INSTALLATION_DRIVE
echo
if [ -z "${INSTALLATION_DRIVE}" ]
then
echo -e "Invalid input, quitting..."
exit 1
fi
对不起lolcat!只是想让剧本变得丰富多彩!
答案 0 :(得分:2)
您没有提供完整答案的足够详细信息,但if
条件错误。您可能想要做的是
if ! lsblk | egrep -qw "sdb|sdc|sdd|sde|sdf"; then
echo "No USB drive found. Please insert one."
fi
请注意是否存在!
和-q
选项,以及缺少[[ ]]
,$()
...