line 45 Erro de sintaxe: final inesperado do arquivo

0

Agora, não importa o que eu faça, sempre diz que, mesmo com um fi, isso não ajuda a depurar o código, por favor. também isso tem 44 linhas de texto e diz que a linha 45 também a arte ascii é apenas um cão, pode parecer estranho, já que estamos em uma área menor.

#!/bin/bash 
clear 

echo "Hello Sir How are you? These are some of my features
date
picture"

read word

if [ $word = picture ]
echo "These are the following pictures I have at my disposel: 
Dog"

if [ $word = date ]

w

fi

read word 

if [ $word = dog ]

fi

echo "
      __,-;;;\
    /;;;;;;;;;;;;;;;/ l \ヽ | /___
   /;;;;;;;;;;;;;;/        ヽ;;;;;;\
  ヽ;;;;;;;;;;;ノ         |;;;;;;;;;;;l
  / ̄~~           |;;;;;;;;;;;;l
  フ  ○          \;;;;;ノ
 ,-~~         ○    ヽ,,,,,,,,,,,,,,、   , , ,
  ~/      ●        \,;;;;;;;;;;;;;;;;;;,V;;;;;;;;;゙,
  l_,,,               >,;;;;;;;;;;;;;;;;;;;;;;ヽ;;;;;;;,゙
   |/l  /l ,      ヽ |ヽl,;;;;;;;;;;;;;;;;;;;;;;;;;;;;i- ''
      Y  V ヽllノ レ ヽ)V;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;j
      ゙,               ' ' ' ' ' ' ,',,'
      ゙,    ヽ-,,,,,,,,゙,    ゙       ゙
       ゙,     ゙,  ,゙ ゙    ゙,゙゙゙゙゙,    .,゙
       ゙,    ,゙  ゙,,,゙,     ゙,  ゙,     ,l
        ゙' ' ' ' ' '    ゙' ' ' ' ' '   ゙' ' ' ' '  " 
    
por Sir_Dippingsauce 02.04.2014 / 19:32

2 respostas

1

O erro que você recebe é porque o bash está procurando o final do bloco if e não consegue encontrá-lo antes do final do arquivo, é por isso que o erro é para a linha 45.

Agora, você tem vários erros de sintaxe, em primeiro lugar, um bloco if tem esta aparência:

if [ test something ]
then
    do something
fi

As palavras-chave then e fi são necessárias. Então, você deve citar as variáveis e strings dentro da construção [ ] test, e você também deve estar ciente de que seu script irá quebrar em espaços e entradas inesperadas.

Uma versão funcional do seu script seria:

#!/bin/bash 
clear 

echo "Hello Sir How are you? These are some of my features
date
picture"

read word

if [ "$word" = "picture" ]
then
echo "These are the following pictures I have at my disposel: 
Dog"
fi


if [ "$word" = "date" ]
then
    w
fi

read word

if [ "$word" = "dog" ]
then
echo "
      __,-;;;\
    /;;;;;;;;;;;;;;;/ l \ヽ | /___
   /;;;;;;;;;;;;;;/        ヽ;;;;;;\
  ヽ;;;;;;;;;;;ノ         |;;;;;;;;;;;l
  / ̄~~           |;;;;;;;;;;;;l
  フ  ○          \;;;;;ノ
 ,-~~         ○    ヽ,,,,,,,,,,,,,,、   , , ,
  ~/      ●        \,;;;;;;;;;;;;;;;;;;,V;;;;;;;;;゙,
  l_,,,               >,;;;;;;;;;;;;;;;;;;;;;;ヽ;;;;;;;,゙
   |/l  /l ,      ヽ |ヽl,;;;;;;;;;;;;;;;;;;;;;;;;;;;;i- ''
      Y  V ヽllノ レ ヽ)V;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;j
      ゙,               ' ' ' ' ' ' ,',,'
      ゙,    ヽ-,,,,,,,,゙,    ゙       ゙
       ゙,     ゙,  ,゙ ゙    ゙,゙゙゙゙゙,    .,゙
       ゙,    ,゙  ゙,,,゙,     ゙,  ゙,     ,l
        ゙' ' ' ' ' '    ゙' ' ' ' ' '   ゙' ' ' ' '  " 
fi

Note que você ainda tem problemas de design, este não é um script bem escrito, além de não lidar com erros, você também não sai se alguma das opções for digitada, o que significa que não importa o que eu faça, eventualmente chegar à impressão do cão. Mesmo se eu inserir date , talvez você queira adicionar algumas exit chamadas lá.

    
por terdon 02.04.2014 / 20:20
0

Você perdeu um fi aqui e eu limpei um pouco (por exemplo, eliminação) -

if [ "$word" = "picture" ]; then
  echo "These are the following pictures I have at my disposal: Dog"
fi # <-- Right there.
    
por Elliott Frisch 02.04.2014 / 19:36