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 ]'
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 [[ "$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
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?
msoliverusa Debian
Post recolhido
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";;
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]
aguamoleusa KUbuntu
Post recolhido
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]
aguamoleusa KUbuntu
Post recolhido
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]
msoliverusa Debian
Post recolhido
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