linux - 如何在 BASH 中跳过不同的提示
问题描述
我正在寻找一种自动化脚本执行的方法,它有 5 个提示:4xYES
和1*NO
. 提示总是位于同一个地方:
是的 | 是的 | 是的 | 没有 | 是的
类似于以下示例中的内容(基于 3 个提示):
#!/bin/bash
read -r -p "Ready to proceed? [yes/no]: " input
if [[ "$input" = "yes" ]]
then
read -r -p "Or maybe abort? [yes/no]: " answer
if [[ "$answer" = "no" ]]
then
read -r -p "So... proceed? [yes/no]: " response
if [[ "$response" = "yes" ]]
then echo "NICE JOB!!!"
fi
fi
fi
显然,通过管道将单个“是”或“否”传递给此脚本将不起作用,因为预期的响应不同。不知道是否有办法通过管道传递多个参数。
我想创建一个数组PROMPT=(yes no yes)
,并$i
通过管道传递给脚本,但这也行不通,而且我不需要为每个数组执行循环脚本$i
。
如果它们的位置不变,有什么方法可以将不同的答案传递给提示?
解决方案
你可以使用printf
和管道
printf '%s\n' yes yes yes no yes | ./script.sh
或输入重定向和进程替换
./script.sh < <(printf '%s\n' yes yes yes no yes)
或此处的字符串
./script.sh <<<$'yes\nyes\nyes\nno\nyes'
或此处的文档
./script.sh <<'EOF'
yes
yes
yes
no
yes
EOF
推荐阅读
- go - 二进制到文本的编码,将一个字节替换为 golang 中预定义的唯一字符串
- python - 如何从循环 Python 中逃脱
- c++ - 无法将 int (*(int))(int) 转换为 int (*(int))(int)
- r - 如何从参考坐标中选择“N”公里内的坐标
- python - 将两个整数列相加,避免使用字符串和 Nan
- c - #包括“板.H”
- javascript - 将 slideToggle() 添加到函数中
- c# - 本地 SQL 的相对路径
- vb.net - SelectCommand 属性在调用 'Fill' 之前没有被初始化的问题
- reactjs - 我想使用 react-images 在模态轮播上添加一个“下载按钮,该按钮应该在模态弹出窗口中可用