Entrada não interativa

0

Estou tentando executar um script bash que baixa e executa outro script. O segundo script contém perguntas que devem ser respondidas por entrada. Eu já tentei usar o expect mas ele falha porque o script baixado é executado no bash, então ele não gerará o script.

Existe outra maneira de passar a entrada para o script depois que ele é baixado e executado?

Aqui está o meu script:

#!/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
    
por danny 07.07.2016 / 21:21

1 resposta

1

Tente isto:

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

Ok, vamos fazer um exemplo completo:

Aqui está meu primeiro script test.sh que fez várias perguntas (seu LinuxConfigurationScript.sh equivalente)

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

Este é o meu segundo script test2.sh que chama o primeiro e responde a todas as perguntas:

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

E a alternativa em uma linha:

{ echo "answer 1"; echo "answer 2"; echo "answer 3"; echo "answer 4"; } | ./test.sh
    
por 08.07.2016 / 13:35

Tags