Bash Script não funciona?

2

Eu fiz um script para verificar se as unidades sdb ou sdc estão presentes. mas mesmo quando eu tenho os dois ou um deles presente, o script está terminando. o que há de errado com o meu roteiro?

HDD1="sdb"
HDD2="sdc"

echo "Checking if necessary hard drives for NFS are present:"

function checkdrive 
{
DRIVE_CHK1=$(lsblk -o NAME | grep -w )
DRIVE_CHK2=$(lsblk -o NAME | grep -w )

if [ "$DRIVE_CHK1" == "" ]; then
    echo Found  drive.
    drive=
elif [ "$DRIVE_CHK2" == "" ]; then
    echo Found  drive.
    drive=
else
    echo ERROR! Could not locate hard drives.
    echo Terminating script.
    exit
fi
}

checkdrive $HDD1 $HDD2
    
por salim 08.04.2015 / 14:50

2 respostas

3

Você executa o script sem o shebang. Se você não tem o shebang, você precisa executá-lo com o anterior:

/bin/bash <script>

Não importa se o script é executável ou não ...
Quando eu executo o script no meu sistema com o comando acima, ele funciona bem.

    
por Jacob Vlijm 08.04.2015 / 14:56
1

Tente "depurar" o seu script com set -x, basta colocá-lo no seu script como primeiro comando (você também pode definir isso em seu console, veja).

[simmel]@[mars]$ set -x
[simmel]@[mars]$ echo Hello
+ echo Hello
Hello

Onde o sinal + mostra o comando que foi executado e a linha depois disso é a saída deste comando.

Verifique sua saída passo a passo e veja se você volta, o que você está procurando.

    
por s1mmel 08.04.2015 / 15:01