Поскольку вы использовали кавычки в "EOF"
, $ {servers [0]} раскрывается в удаленной оболочке, поэтому пустая строка в массиве servers
не определена. Один из способов:
#!/bin/bash
servers=(192.168.130.252 10.10.10.10 12.12.12.12)
echo "Before ssh: ${servers[0]}"
ssh ubuntu@"${servers[0]}" CURRENT_HOST="${servers[0]}" /bin/bash<<"EOF"
echo "$(hostname -I | awk '{print $1}')"
echo "After ssh: $CURRENT_HOST"
# MORE COMMAND HERE
EOF
exit 0
Только что нашел способ отправить весь массив в удаленную оболочку:
#!/bin/bash
servers=(192.168.130.252 10.10.10.10 12.12.12.12)
echo "Before ssh: ${servers[0]}"
{ declare -p servers
cat << "EOF"
echo "$(hostname -I | awk '{print $1}')"
echo "After ssh: ${servers[0]}"
# MORE COMMAND HERE
EOF
} | ssh ubuntu@"${servers[0]}" /bin/bash