我正在编写一个 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。只需复制并粘贴那里的内容,但更改yn
为yn_2
例如,然后也在您的 case 语句中使用该变量。