非対話型入力

非対話型入力

別のスクリプトをダウンロードして実行する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

関連情報