Bash 脚本不起作用?

Bash 脚本不起作用?

我编写了一个脚本来检查 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

其中 + 号表示执行的命令,其后一行是该命令的输出。

逐步检查您的输出并查看是否找到了您想要的内容。

相关内容