如何在命令行中向 .sh 提供输入

如何在命令行中向 .sh 提供输入

我有脚本 abc.sh,它向用户显示 4 个选项,其中 1 个是我们需要选择的。起初我们将输入设置为 1 - 第一个选项 现在它会再次显示 3 个选项,我必须选择 1 - 作为第二个选项。现在,它会询问域名,我需要提供 abc/abc@xyz - 作为第三个选项。现在,在此之后,它将询问 ENV 详细信息,我需要提供 ENV_NO。像这样,我想为现有脚本 abc.sh 提供 4 个不同的输入。那么我们如何在 abc.sh 的单个命令中自动给出上述输入。我们不想编辑现有 abc.sh 中的任何内容

答案1

您有一个现有程序,它从其标准输入中读取四项内容,并且您希望向该程序提供输入,而不实际与其交互。

您可以准备一个如下所示的文本文件 ( input.txt)(数据取自您问题的文本):

1
1
abc/abc@xyz
ENV_NO

然后你可以像这样运行你的脚本:

$ ./abc.sh <input.txt

这将使脚本从文件读取而不是从键盘交互读取。脚本的任何输出仍将显示在终端上(如输入问题),但输入将从给定文件中读取。

除了文件之外,您还可以使用此处文档:

./abc.sh <<END_INPUT
1
1
abc/abc@xyz
ENV_NO
END_INPUT

答案2

让我知道这就是你要找的

read -r -p "`echo $'\n'`please enter your 1st option: " OPTION1
read -r -p "`echo $'\n'`please enter your 2nd option: " OPTION2
read -r -p "`echo $'\n'`please enter your domain: " OPTION3
read -r -p "`echo $'\n'`please enter your env: " OPTION4
echo "$OPTION1 $OPTION2 $OPTION3 $OPTION4"

相关内容