我正在尝试运行一个 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