Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 当涉及到Y/N确认时,我应该将实际命令放在哪里?_Bash_Shell_While Loop - Fatal编程技术网

Bash 当涉及到Y/N确认时,我应该将实际命令放在哪里?

Bash 当涉及到Y/N确认时,我应该将实际命令放在哪里?,bash,shell,while-loop,Bash,Shell,While Loop,我正在阅读,发现它对于我正在尝试编写的脚本很有用,但是如果给出了正确的输入,我应该将代码放在哪里执行呢 我的代码如下: 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 d

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

我的代码如下:

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

那么,这些代码到底去了哪里?说到这一点,我可能会很傻,但我无法理解。

多亏了@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替换为需要确认的代码。

使用消除过程。执行N分支并退出有意义吗?还剩下什么?或者您需要搜索包含案例的教程。。。esac示例?那里应该有很多,否则在这里搜索[巴什]以撒可能就足够了。祝你好运。用你想要的任何命令替换makeinstall。或者你可以把代码放在循环之后,而不是放在循环内部。不,我的意思是在完成之后,所以完全在循环外部-这就是执行中断后流控制将跳转的地方。那么exit去哪里?exit完全停止脚本;如果我想让脚本继续运行,我会在[Nn]行中使用break?