別のスクリプトをダウンロードして実行するbashスクリプトを実行しようとしています。 2番目のスクリプトには、入力して回答する必要がある質問が含まれています。 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
以下は、最初のスクリプトを呼び出してすべての質問に答える2番目のスクリプトです。
./test.sh <<EOF
answer 1
answer 2
answer 3
answer 4
EOF
そして、1行の代替は次のとおりです。
{ echo "answer 1"; echo "answer 2"; echo "answer 3"; echo "answer 4"; } | ./test.sh