Это - мой код
#!/bin/bash
function boo {
function goo {
echo "Please enter name"
read name;
echo "Hello $name"
}
function xoo {
echo "Please enter number"
read numl;
echo "$numl"
}
read -p "`echo $'\n> \n>'` Name N or Number S`echo $'\n> \n>'`" var
if [[ $var =~ [nN](es)* ]]
then
goo
elif [[ $var =~ [sS](es)* ]]
then
xoo
fi
}
boo
read -p "`echo $'\n> \n>'` To Repeat press Y`echo $'\n> \n>'`" prompt
if [[ $prompt =~ [yY](es)* ]]
then
boo
else
echo""
fi
Первоначально я могу успешно запустить этот скрипт путем двойного щелчка, но когда я пытался повторить его его выход
>
> Name N or Number S
>
>n
Please enter name
john
Hello john
>
> To Repeat press Y
>
>y
>
> Name N or Number S
>
>n
Please enter name
ajay
Я могу распечатать привет Джона, но когда я ввожу ajay его выход. Какая-либо идея, что происходит
Ваша проблема if…then
. После того, как первые отзывают boo
, Вы проверяете, что значение prompt
и boo
будет запущено, если prompt
будет y
. После этого больше нет кода для выполнения и выходы сценария.
Используя этот сценарий
#!/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 <час> Пример
% ./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
%
\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 <час> Пример
% ./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
%
\n> \n> To Repeat press Y \n> \n> ' prompt
if [[ ! $prompt =~ [yY](es)* ]]; then
break
fi
done
exit 0
<час> Пример
% ./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
%