【问题标题】:Where do I put the actual command when it comes to Y/N confirmation?当涉及到 Y/N 确认时,我在哪里放置实际命令?
【发布时间】:2018-07-08 18:53:31
【问题描述】:

我正在阅读this post,发现它对我正在尝试编写的脚本很有用,但是如果给出正确的输入,我应该将代码放在哪里执行。

我的代码是这样的:

while true; do
    read -p "Do you wish to install this program?" yn 
    case $yn in
        [Yy]* ) make install; break;;
        [Nn]* ) exit;;
        * ) echo "Yes or No";; 
    esac 
done

现在我尝试执行的代码(确认)是:

apt-get install vsftpd

那么该代码实际上去哪里了?说到这个,我可能只是愚蠢,但我想不通。

【问题讨论】:

  • 使用消除过程。执行N 分支和exit 有意义吗?剩下什么?或者您是否需要搜索包含case ... esac 示例的教程?应该有很多,或者在这里搜索[bash] esac 可能就足够了。祝你好运。
  • 用你想要的任何命令替换make install

标签: bash shell while-loop


【解决方案1】:

感谢@that other guy 和@Charles Duffy,我通过制作如下脚本代码来修复我的脚本:

while true; do
    read -p "Do you wish to install $program-name?: " yn 
    case $yn in
        [Yy]* ) echo "some code here"; break;;
        [Nn]* ) break;;
        * ) echo "Yes or No";; 
     esac 
done

$program-name 替换为任何内容,将$code 替换为您要确认的代码。

【讨论】:

  • 或者你可以把代码放在循环之后,而不是放在循环里面。
  • 不,我的意思是在done 之后,所以完全在循环之外——这是在执行break 之后流控制将跳转的地方。
  • 那么退出去哪里?
  • exit 完全停止脚本;它不会去任何地方
  • 哦,所以如果我想让脚本继续运行,我会在[Nn] 行中使用break
猜你喜欢
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2020-11-09
  • 2019-11-03
  • 2015-01-17
  • 1970-01-01
相关资源
最近更新 更多