비대화형 입력

비대화형 입력

다른 스크립트를 다운로드하고 실행하는 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

관련 정보