O que é que tem de errado? [RESOLVIDO]

1. O que é que tem de errado? [RESOLVIDO]

João Cláudio de Alcântara
aguamole

(usa Lubuntu)

Enviado em 24/04/2019 - 22:42h

O que é que tem de errado na linha 18 desse script?
O debug a seguir:

# ./teste.sh
Deseja Formatar o disco RAID criado?(s/n)
s
./teste.sh: linha 18: erro de sintaxe próximo do `token' não esperado `elif'
./teste.sh: linha 18: ` elif [ "$Fs" = 1 ]'


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/04/2019 - 15:29h


aguamole escreveu:

E porque agora não executa o comando quando coloco 1:

echo "Qual filesystem deseja usar?"
echo "1 - Para Btrfs"
echo "2 - Para ext4"
read Fs

elif [ "$Fs" = 1 ]
then echo "Criando o filesystem"
mkfs.btrfs -f "$md"1
echo "Terminado"

--------------------------------------

#!/bin/bash

md=/dev/sde
echo "Deseja Formatar o disco RAID criado?(s/n)"
read Format

if [ "$Format" = s ]
then echo "Criando partição."
echo -e ',,,' | sfdisk --label=gpt $md
echo "Partição criada."

echo "Qual filesystem deseja usar?"
echo "1 - Para Btrfs"
echo "2 - Para ext4"
read Fs

elif [ "$Fs" = "1" ]
then echo "Criando o filesystem"
mkfs.btrfs -f "$md"1
echo "Terminado"

elif [ "$Fs" = "2" ]
then echo "Criando o filesystem"
mkfs.ext4 -f "$md"1
echo "Terminado"
fi

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.

AguaMole, boa tarde.
Você persiste no erro!!!!!
E porque agora não executa o comando quando coloco 1:
Estranho seria se executasse,,,,
Com a sintaxe que usou, o bloco condicional é encerrado, na 1ª condição.
Deve usar dois blocos condicionais, um para checar o [SN], e
outro para checar o filesystem [12].
Na minha resposta anterior, utilizei o case para fazer a checagem do [12],
Segue abaixo com o "IF":

#!/bin/bash
clear
md=/dev/sde
read -n1 -p " Deseja Formatar o disco RAID criado?(s/n): " Format

if [[ "$Format" =~ (S|s) ]];then #Testa se digitou s ou S
echo -e "\n Criando partição."
#echo -e ',,,' | sfdisk --label=gpt $md
echo -e "\n Partição criada."

echo -e "\n Qual filesystem deseja usar?"
echo -e " [1] - Para Btrfs\n [2] - Para ext4\n"
read -n1 -p " Escolha 1 ou 2: " Fs

if [ "$Fs" -eq 1 ];then
echo -e "\n Criando o filesystem"
# mkfs.btrfs -f "$md"1
echo " Terminado"

elif [ "$Fs" -eq 2 ];then
echo -e "\n Criando o filesystem"
# mkfs.ext4 -f "$md"1
echo " Terminado"

else
echo -e "\n Opção inválida,\n Escolha 1 0u 2\n Saindo . . .";exit 0;
fi

elif [[ "$Format" =~ (N|n) ]];then #Testa se digitou N ou n
echo -e "\n Você digitou [Nn]\n Saindo....";exit 0;
else
echo -e "\n Opção inválida, Digite [Ss]im ou [Nn]ão\n Saindo . . .";exit 0;
fi


É isso, se te ajudei, me ajude, marcando como a MELHOR RESPOSTA... Rsrsrsrsr
IMPORTANTE=> echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

3. Re: O que é que tem de errado?

João Cláudio de Alcântara
aguamole

(usa Lubuntu)

Enviado em 24/04/2019 - 22:42h

1 - #!/bin/bash
2 -
3 - md=/dev/sdf
4 - echo "Deseja Formatar o disco RAID criado?(s/n)"
5 - read Format
6 -
7 - if [ "$Format" = s ]
8 - then echo "Criando partição."
9 - echo -e ',,,' | sfdisk --label=gpt $md
10 - echo "Partição criada."
11 - else exit
12 -
13 - echo "Qual filesystem deseja usar?"
14 - echo "1 - Para Btrfs"
15 - echo "2 - Para ext4"
16 - read Fs
17 -
18 - elif [ "$Fs" = 1 ]
then echo "Criando o filesystem"
mkfs.btrfs "$md"1
echo "Terminado"

elif [ "$Fs" = 2 ]
then echo "Criando o filesystem"
mkfs.ext4 "$md"1
echo "Terminado"
fi

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.


4. Re: O que é que tem de errado?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/04/2019 - 23:36h

aguamole escreveu:

1 - #!/bin/bash
2 -
3 - md=/dev/sdf
4 - echo "Deseja Formatar o disco RAID criado?(s/n)"
5 - read Format
6 -
7 - if [ "$Format" = s ]
8 - then echo "Criando partição."
9 - echo -e ',,,' | sfdisk --label=gpt $md
10 - echo "Partição criada."
11 - else exit #EXIT aqui, não funciona.
12 - # Comandos depois do EXIT também não . . .
13 - echo "Qual filesystem deseja usar?"
14 - echo "1 - Para Btrfs"
15 - echo "2 - Para ext4"
16 - read Fs

17 -
18 - elif [ "$Fs" = 1 ]
then echo "Criando o filesystem"
mkfs.btrfs "$md"1
echo "Terminado"

elif [ "$Fs" = 2 ]
then echo "Criando o filesystem"
mkfs.ext4 "$md"1
echo "Terminado"
fi

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.

Boa noite Aguamole.
O ERRO está na sintaxe do condicional.
O correto é:
if condição faça
elif condição faça
.
.
.
else
faça
fi
Marquei onde esta o erro.
#EDITADO - Não Testei . . . Mas, deve estar certo.

#!/bin/bash

md=/dev/sdf
echo "Deseja Formatar o disco RAID criado?(s/n)"
read -n1 Format

if [[ "$Format" =~ (S|s) ]];then
echo "Criando partição."
echo -e ',,,' | sfdisk --label=gpt $md
echo -e " Partição criada.\n Qual filesystem deseja usar?\n"
echo -e " \"1\" - Para Btrfs\n \"2\" - Para ext4\n"
read -n1 -p "Informe o Sistema de Arquivo: " Fs

case $Fs in
1) echo "Criando o filesystem [mkfs.btrfs]";
mkfs.btrfs "$md"1;
echo "Terminado";;

2) echo "Criando o filesystem";
mkfs.ext4 "$md"1;
echo "Terminado";;

*) echo -e "\nOPÇÃO INVÁLIDA\nSaindo . . .";exit;;
esac
else
exit
fi

IMPORTANTE => echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver


5. Re: O que é que tem de errado? [RESOLVIDO]

João Cláudio de Alcântara
aguamole

(usa Lubuntu)

Enviado em 25/04/2019 - 00:35h

E porque agora não executa o comando quando coloco 1:

echo "Qual filesystem deseja usar?"
echo "1 - Para Btrfs"
echo "2 - Para ext4"
read Fs

elif [ "$Fs" = 1 ]
then echo "Criando o filesystem"
mkfs.btrfs -f "$md"1
echo "Terminado"

--------------------------------------

#!/bin/bash

md=/dev/sde
echo "Deseja Formatar o disco RAID criado?(s/n)"
read Format

if [ "$Format" = s ]
then echo "Criando partição."
echo -e ',,,' | sfdisk --label=gpt $md
echo "Partição criada."

echo "Qual filesystem deseja usar?"
echo "1 - Para Btrfs"
echo "2 - Para ext4"
read Fs

elif [ "$Fs" = "1" ]
then echo "Criando o filesystem"
mkfs.btrfs -f "$md"1
echo "Terminado"

elif [ "$Fs" = "2" ]
then echo "Criando o filesystem"
mkfs.ext4 -f "$md"1
echo "Terminado"
fi

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.


6. Re: O que é que tem de errado? [RESOLVIDO]

João Cláudio de Alcântara
aguamole

(usa Lubuntu)

Enviado em 25/04/2019 - 15:54h

Entende nunca tinha usado o elif.
Obrigado.

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.


7. Re: O que é que tem de errado? [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/04/2019 - 16:41h


aguamole escreveu:

Entende nunca tinha usado o elif.
Obrigado.

CPU Q6600 GTX 750 SofRaid 4xSSD 4Gb DDR2 mesmo assim uso Lubuntu.

No começo é normal....
O "if", testa uma condição, se for satisfeita/verdadeira, interrompe o bloco.
O "elif", testa outra condição, se for satisfeita/verdadeira, interrompe o bloco.
"Cai" no "else", se não for verdadeira/satisfeita no if nem no elif,
O case também é bastante uil, em certa ocasião, fiz uns testes, e foi bem mais rápido que o "IF"....
É isso ai.....
Valeu pela melhor resposta.....
Att.: Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts