我编写了一个脚本来检查 sdb 或 sdc 驱动器是否存在。但即使同时存在两个驱动器或其中一个驱动器,脚本也会终止。我的脚本有什么问题?
HDD1="sdb"
HDD2="sdc"
echo "Checking if necessary hard drives for NFS are present:"
function checkdrive
{
DRIVE_CHK1=$(lsblk -o NAME | grep -w $1)
DRIVE_CHK2=$(lsblk -o NAME | grep -w $2)
if [ "$DRIVE_CHK1" == "$1" ]; then
echo Found $1 drive.
drive=$1
elif [ "$DRIVE_CHK2" == "$2" ]; then
echo Found $2 drive.
drive=$2
else
echo ERROR! Could not locate hard drives.
echo Terminating script.
exit
fi
}
checkdrive $HDD1 $HDD2
答案1
运行脚本时无需使用 shebang。如果没有 shebang,则需要使用上述命令运行它:
/bin/bash <script>
无论该脚本是否可执行...
当我使用上述命令在我的系统上运行该脚本时,它可以正常工作。
答案2
尝试使用 set -x “调试”您的脚本,只需将其作为第一个命令放入您的脚本中(您也可以在控制台中设置它,看看)。
[simmel]@[mars]$ set -x
[simmel]@[mars]$ echo Hello
+ echo Hello
Hello
其中 + 号表示执行的命令,其后一行是该命令的输出。
逐步检查您的输出并查看是否找到了您想要的内容。