Seu problema é o if…then
. Após a primeira chamada desligar boo
, verifique o valor de prompt
e boo
será iniciado, se prompt
for y
. Depois disso, não há mais código para executar e o script sai.
Usando este script
#!/bin/bash
function boo {
function goo {
echo "Please enter name"
read -r name;
echo "Hello $name"
}
function xoo {
echo "Please enter number"
read -r numl;
echo "$numl"
}
read -rep $'\n> \n> Name N or Number S \n> \n> ' var
if [[ $var =~ [nN](es)* ]]; then
goo
elif [[ $var =~ [sS](es)* ]]; then
xoo
fi
}
while true; do
boo
read -rep $'\n> \n> To Repeat press Y \n> \n> ' prompt
if [[ ! $prompt =~ [yY](es)* ]]; then
break
fi
done
exit 0
Exemplo
% ./foo
>
> Name N or Number S
>
> N
Please enter name
abc
Hello abc
>
> To Repeat press Y
>
> y
>
> Name N or Number S
>
> N
Please enter name
def
Hello def
>
> To Repeat press Y
>
> y
>
> Name N or Number S
>
> N
Please enter name
jjj
Hello jjj
>
> To Repeat press Y
>
> n
%