非交互式输入

非交互式输入

我正在尝试运行一个 bash 脚本,该脚本下载并运行另一个脚本。第二个脚本包含必须通过输入回答的问题。我已经尝试使用 Expect 但它失败了,因为下载的脚本在 bash 中运行,因此它不会生成脚本。

下载并运行后是否有另一种方法将输入传递给脚本?

这是我的脚本:

#!/bin/bash
mkdir ~/.aws
echo "[default]" >> ~/.aws/credentials
echo "aws_access_key_id = <key here>" >> ~/.aws/credentials
echo "aws_secret_access_key = <key here>" >> ~/.aws/credentials
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -o LinuxConfigurationScript.sh
chmod +x LinuxConfigurationScript.sh
./LinuxConfigurationScript.sh -r us-east-1

答案1

尝试这个:

./LinuxConfigurationScript.sh -r us-east-1 <<EOF
command 1
command 2
EOF

好吧,让我们做一个完整的例子:

这是我的第一个脚本test.sh,它提出了几个问题(您的LinuxConfigurationScript.sh同等问题)

read -p "Question 1?" ans
echo $ans
read -p "Question 2?" ans
echo $ans
read -p "Question 3?" ans
echo $ans
read -p "Question 4?" ans
echo $ans

这是我的第二个脚本test2.sh,它调用第一个脚本并回答所有问题:

./test.sh <<EOF
answer 1
answer 2
answer 3
answer 4
EOF

以及一行中的替代方案:

{ echo "answer 1"; echo "answer 2"; echo "answer 3"; echo "answer 4"; } | ./test.sh

相关内容