Verifique a partição da unidade no Script Shell do Linux com curingas

0

Eu estava escrevendo um script de shell que limpa, particiona e formata a unidade selecionada quando me deparei com alguns problemas com as unidades nvme.

Essencialmente, o que estou tentando realizar é uma maneira de usar o caractere curinga * na instrução if abaixo para verificar se a unidade é uma unidade nvme ou não, portanto, posso declarar variáveis para as partições usarem posteriormente no script.

Esta é a parte relevante do script agora:

if [ "$DRIVE" == "/dev/nvme*" ] ; then
    DRIVEp1="${DRIVE}p1"
    DRIVEp2="${DRIVE}p2"
    DRIVEp3="${DRIVE}p3"
else
    DRIVEp1=${DRIVE}1"
    DRIVEp2=${DRIVE}2"
    DRIVEp3=${DRIVE}3"
fi

Quando eu executo o script como está e tenho $ DRIVE configurado para "/ dev / nvme0n1", o script ignora a correspondência e vai para a cláusula else.

    
por Daz 29.04.2017 / 15:50

1 resposta

0

Supondo que você está executando bash , você tem duas opções para a comparação:

if [[ "$DRIVE" =~ "/dev/nvme.*" ]] ; then

ou:

if [ "${DRIVE#/dev/nvme}" != "$DRIVE" ] ; then

No primeiro caso, os colchetes duplos permitem o operador de correspondência de expressão regular =~ extra; no segundo, a variável DRIVE é verificada para começar com /dev/nvme expandindo com a string principal /dev/nvme removed para ver se o resultado difere da expansão completa.

Com outros shells, você pode precisar usar um programa externo, por exemplo:

if [ 'echo $DRIVE | grep -o "^/dev/nvme"' == "/dev/nvme" ] ; then
    
por 29.04.2017 / 16:42