首页 > 解决方案 > Bash 脚本回答交互式提示

问题描述

我想创建一个脚本,用于生成一些报告,但要做到这一点,我必须回答几个问题,这些问题由我运行的其他脚本提出。

答案可以是肯定的,否定的,对于某些我需要选择 1,2 或 3 的问题,我需要“按 [Enter] 继续:”...所以我的问题是如何以最好的方式做到这一点?

这是我现在的脚本(它不起作用它在第二个问题上停止,我需要回答为 Y)答案的顺序是:是/是/是/ENTER/2/3/1/否/否/是

#!/bin/bash
while read LINE ; do
        ssh $LINE <<"EOF"
                echo "$HOSTNAME"
                        printf '\Y \nY \nY \n \n2 \n3 \n1 \nN \nN \nY' |/tmp/script.sh
                done
EOF
done < file1 >> /tmp/result.log

好的,现在我在需要选择 2/3/1 的阶段遇到问题,它没有回答 2,请参阅日志中的示例...

Choose the Veritas enterprise product family:
     1@)  NetBackup Family
     2@)  Storage Foundation and HA Solutions / InfoScale Solutions

Choose your option: [1-2,q] (1)@ Invalid input. Re-enter.
Choose your option: [1-2,q] (1)@

标签: bash

解决方案


您需要将换行符明确写入脚本。

printf 'Y\nY\nY\n\n2\n3\n1\nn\nn\nY\n' | /tmp/script.sh

这假定Y对应于“是”并且n对应于“否”。您还可以printf对参数进行循环,以减少\n.

printf '%s\n' Y Y Y "" 2 3 1 n n Y | /tmp/script.sh

空字符串对应于在没有任何其他输入的情况下按 Enter。


推荐阅读