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á.