ちょっとした背景、私は新しい行を区切って1000個のサーバーを持つファイルを持っています。私はそれらをSSH上で約5つのコマンドを実行するアレイに読み込まなければなりません。私はheredoc表記を使っていますが、それは失敗するようです。現在、ホストが認識されないというエラーが表示されます。配列をbashのsshに移入する
IFS='\n' read -d '' -r -a my_arr < file
my_arr=()
for i in "${my_arr[@]}"; do
ssh "$1" bash -s << "EOF"
echo "making back up of some file"
cp /path/to/file /path/to/file.bak
exit
EOF
done
私は、最初のサーバがリストされた出力を取得しますが、その後はアレイのすべての出力も表示します。私はこれを引き起こすSTDINのリダイレクトがないことを知っています。
ありがとうございました。
あなたのスクリプトには、反復処理されるアイテム以外の '$ i'はありません。 '$ 1'ではなく' $ i'を使いますか? –
...明らかであるように、これはsshやheredocsとは何も関係ありません。あなたは他のコマンドでもまったく同じ問題を抱えています - '$ {my_arr [@]} 'のiのために; echo "$ 1"; 「済」は同じように失敗する。 –
ところで、 'declare -p my_arr'を使ってその内容を明白に表示して、配列が実際に正しく読み込まれているかどうかの質問に答えます。 –