我正在尝试创建一个shell脚本,它会提示一组问题,并根据答案运行一个命令。如果在任何时候输入"no“,那么shell脚本就会退出。例如:
如有任何建议,将不胜感激。
编辑:添加代码。我真正的问题是当输入shell脚本时,将日期添加到shell脚本的末尾。
#!/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发布于 2017-05-15 02:06:07
使用利用bash版本的read的-sN1开关的函数(-sN1不打印任何内容,只读取1个字符):
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备注:
$x将x=${x,}转换为小写简化了测试。yn除了[yYnN]什么都不响应,所以不需要提示提示。yn返回一个真/假退出代码,这简化了测试。select命令返回运行日期文件名,然后运行它。https://stackoverflow.com/questions/43969390
复制相似问题