首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在安装过程中,Shell脚本提示是或否

在安装过程中,Shell脚本提示是或否
EN

Stack Overflow用户
提问于 2017-05-14 22:24:43
回答 1查看 466关注 0票数 0

我正在尝试创建一个shell脚本,它会提示一组问题,并根据答案运行一个命令。如果在任何时候输入"no“,那么shell脚本就会退出。例如:

  1. 您想安装新的更新程序是还是否?如果用户输入是,那么运行以下脚本(./install.sh)
  2. 目前的日期是什么?或与rundate.sh文件匹配的前一个日期。如果用户输入"201707“,则运行(./rundate201707.sh)
  3. 你想要运行补丁吗?是还是不是?如果用户输入“是”,那么运行./patch.sh

如有任何建议,将不胜感激。

编辑:添加代码。我真正的问题是当输入shell脚本时,将日期添加到shell脚本的末尾。

代码语言:javascript
运行
复制
#!/bin/bash

while true; do
    read -p "do you want to install the new update?[Y/n]: " yn
    case $yn in
        [Yy]* ) ./install.sh; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done
while true; do
    echo -n "Enter the date as YYYYMMDD:> " 
      read date
      if [ ${#date} -eq 8 ]; then
EN

回答 1

Stack Overflow用户

发布于 2017-05-15 02:06:07

使用利用bash版本的read-sN1开关的函数(-sN1不打印任何内容,只读取1个字符):

代码语言:javascript
运行
复制
yn() { echo -n "$1: "
       while read  -sN1 x ; do 
           x=${x,}
           case $x in [yn]) break ;; *) : ;; esac
       done
       echo $x
       [ $x = y ] ; }

yn "Do you want to install the new update? [Y/n]" || exit
./install.sh
echo "Pick a rundate file: "
select x in ./rundate????????.sh ; do $x ; break ; done
yn "Would you like to run the patch? [Y/n]" || exit
./patch.sh

备注:

  1. 使用$xx=${x,}转换为小写简化了测试。
  2. yn除了[yYnN]什么都不响应,所以不需要提示提示。
  3. yn返回一个真/假退出代码,这简化了测试。
  4. select命令返回运行日期文件名,然后运行它。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43969390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档