脚本中有两个或多个是/否问题?

脚本中有两个或多个是/否问题?

我正在编写一个 bash 脚本,其中有一个“是/否”问题,但现在我想在其中有另一个是/否问题。该脚本只能处理一个是/否问题,那么我怎么能有两个或更多是/否问题呢?

是/否脚本是:

read -p "Do you want to install this programme? " yn 
case $yn in 
[Yy]* ) sudo apt-get install "$programme";; 
[Nn]* ) exit;; 
* ) echo "Please answer yes or no. ";; 
esac 
exit

答案1

您在这里可能遇到的问题是范围问题之一。换句话说,变量的值是在脚本中的某个点设置的,并且该变量值始终保留。后来,您遇到了这样的问题:由于定义了变量(即具有值),因此您的条件确实按预期求值。

这是一个代码示例,给您一个例子

foo ()
{
    local yn
    read -p "Do you want to install this programme? " yn
    case $yn in
        [Yy]* ) echo $yn;;
        [Nn]* ) exit;;
        * ) echo "Please answer yes or no. ";;
    esac
}
foo
echo $yn

现在,请注意,当您运行该代码示例时,当 $yn 在 foo() 范围内回显时,它会返回您输入的内容,但在该范围之外它是空的。当我声明 foo 函数的本地变量(例如,{})时,它在外部是未定义的。如果您想重用变量名称而不使它们相互冲突,则可以这样做。

答案2

我不确定我是否明白这个问题,但我想我明白了。

如果您想保留这些选择以供以后在脚本中仔细阅读,只需对每个问题使用不同的变量名称即可。

IE。只需复制并粘贴那里的内容,但更改ynyn_2例如,然后也在您的 case 语句中使用该变量。

相关内容