Bash 我想编写一个shell脚本来授权用户,但没有';行不通

Bash 我想编写一个shell脚本来授权用户,但没有';行不通,bash,shell,Bash,Shell,我在.bash_配置文件中调用hello.sh。 当用户输入错误的名称时,我尝试退出,但它不起作用。我认为这是因为概要文件是在shell实际运行之前读取的,所以退出不会影响shell的运行。如何达到我的目标 代码是: #!/bin/bash echo "What's you name?" read name if [ $name = "Frank" ] then echo 'Hello' $name echo 'So happy to see you' echo 'Happy co

我在.bash_配置文件中调用hello.sh。 当用户输入错误的名称时,我尝试退出,但它不起作用。我认为这是因为概要文件是在shell实际运行之前读取的,所以退出不会影响shell的运行。如何达到我的目标

代码是:

#!/bin/bash
echo "What's you name?"
read name
if [ $name = "Frank" ]
then
  echo 'Hello' $name 
  echo 'So happy to see you'
  echo 'Happy coding :)'
else
  echo 'You are not the right user.'
  echo `exit`
fi

直接隐式调用shell文件会在新shell中启动和执行。这意味着exit语句仅从子shell退出


使用“.hello.sh”调用将在现有shell中执行hello.sh,因此exit语句将终止该shell及其窗口。

直接隐式调用shell文件将在新shell中启动并执行。这意味着exit语句仅从子shell退出


使用“.hello.sh”调用将在现有shell中执行hello.sh,因此exit语句将终止该shell及其窗口。

您有
echo`exit`
(返回
exit
),为什么不干脆
exit
?(现在不记得了,但运行“固定”版本可能会关闭终端窗口。请做好准备或在单独的窗口中运行)。祝你好运。@Sheller它将打印文本,但仍然无法退出当前的终端窗口。你如何称呼它?如果您的个人资料中只有“hello.sh”,它将为它启动一个新的shell。你试过“喂,嘘”吗?(注意“.”后面的空格)。这将在现有shell中运行该文件。@racraman它可以工作!谢谢。您现在正在使用回声出口吗?那一行应该只有
exit
。你有
echo`exit`
(返回
exit
),为什么不干脆
exit
?(现在不记得了,但运行“固定”版本可能会关闭终端窗口。请做好准备或在单独的窗口中运行)。祝你好运。@Sheller它将打印文本,但仍然无法退出当前的终端窗口。你如何称呼它?如果您的个人资料中只有“hello.sh”,它将为它启动一个新的shell。你试过“喂,嘘”吗?(注意“.”后面的空格)。这将在现有shell中运行该文件。@racraman它可以工作!谢谢。您现在正在使用回声出口吗?那一行应该只有
exit