Bash 在shell脚本中运行shell脚本-好还是坏?

Bash 在shell脚本中运行shell脚本-好还是坏?,bash,shell,scripting,Bash,Shell,Scripting,最近我在学校得到一个作业,我们将用Bash脚本语言编写一个小程序 这个shell脚本应该接受命令行上的一些位置参数或参数 现在,在if-else语句的帮助下,我检查参数是否存在,如果参数存在,脚本将执行它应该执行的操作,但是如果参数不存在,我将显示一条错误消息,提示用户输入参数并再次将参数传递给同一shell脚本 现在,我想知道这种方法在Bash编程范式中是好是坏。我有点怀疑,这可能会在后台运行太多的任务,这些任务保持打开状态,或者永远不会结束,并继续消耗内存。。。请帮忙 下面是一个小片段,假设

最近我在学校得到一个作业,我们将用Bash脚本语言编写一个小程序

这个shell脚本应该接受命令行上的一些位置参数或参数

现在,在if-else语句的帮助下,我检查参数是否存在,如果参数存在,脚本将执行它应该执行的操作,但是如果参数不存在,我将显示一条错误消息,提示用户输入参数并再次将参数传递给同一shell脚本

现在,我想知道这种方法在Bash编程范式中是好是坏。我有点怀疑,这可能会在后台运行太多的任务,这些任务保持打开状态,或者永远不会结束,并继续消耗内存。。。请帮忙

下面是一个小片段,假设脚本名为script1.bash:

 #!/bin/bash

 if [ $# -gt 0 ]; then
      read -p "Please enter your name: " name
      script1.bash $name
 elif [ $# -eq 1 ]; then
      echo "Your name is $1!"
 fi

是。。。可疑:-

主要的问题是,每当有人拒绝输入他们的名字时,你就会产生一个子shell

您最好使用以下内容:

#!/bin/bash
name=$1
while [[ -z "$name" ]] ; do
    read -p "Please enter your name: " name
done
echo "Your name is $name!"

不会产生子壳。

它是。。。可疑:-

主要的问题是,每当有人拒绝输入他们的名字时,你就会产生一个子shell

您最好使用以下内容:

#!/bin/bash
name=$1
while [[ -z "$name" ]] ; do
    read -p "Please enter your name: " name
done
echo "Your name is $name!"

这不会产生子shell。

谢谢paxdiablo,我尝试过使用top命令做一些becnhmarking,但没有显示它们的。。。只是想知道???如果他使用exec来做递归调用,他的原始代码会工作吗?好吧,他的原始代码的工作原理不同于这样一个事实:它应该是$1,而不是elif位中的$name,除非您多次按ENTER键,否则系统会耗尽进程。exec会阻止这种情况发生。我的回答更接近于只做需要做的事情。当您可以快速启动while循环时,启动另一个进程或甚至替换当前进程的内容都没有意义。谢谢您的输入。我意识到我在if-else语句的第二部分搞砸了。谢谢!谢谢paxdiablo,我试着用top命令做了一些becnhmarking,但是没有显示他们的。。。只是想知道???如果他使用exec来做递归调用,他的原始代码会工作吗?好吧,他的原始代码的工作原理不同于这样一个事实:它应该是$1,而不是elif位中的$name,除非您多次按ENTER键,否则系统会耗尽进程。exec会阻止这种情况发生。我的回答更接近于只做需要做的事情。当您可以快速启动while循环时,启动另一个进程或甚至替换当前进程的内容都没有意义。谢谢您的输入。我意识到我在if-else语句的第二部分搞砸了。谢谢!如果这是学校作业,您应该包括家庭作业标记。@B Mitch-将从下次开始处理这个问题。.在shell脚本中运行的shell脚本?这太糟糕了。如果这是学校作业,你应该包括家庭作业标签。@B Mitch-将从下次开始处理这个问题。.在shell脚本中运行的shell脚本?真是讨厌。