这是我的代码
#!/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
我可以打印 hello john,但是当我输入 ajay 时,它就退出了。知道发生了什么吗
答案1
您的问题是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 $'\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
例子
% ./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
%