echo " checking $hostname" or echo " checking ${hostname}" returns nothing.
Это ожидается. В общем случае такой переменной с именем hostname
нет, поэтому вы не ожидаете результата. Однако есть переменная HOSTNAME
, но это только половина проблемы.
echo "check $ (hostname)" иронически возвращает имя хоста локального сервера.
Это потому, что когда вы используете документ "здесь", как в
somecommand << EOF
...
EOF
Содержимое этого документа оценивается на предмет расширения переменных до подачи ввода в вашу команду. Именно поэтому конструкция $(hostname)
выполняет команду hostname
в вашей локальной системе.
Вы можете запретить оценку документа здесь, заключив свой маркер конца в одинарные кавычки, например:
ssh $Server /bin/bash <<'EOF'
install some software
echo "checking $HOSTNAME after installation"
java -version
groovy -v
jruby -v
EOF