Оно должно быть:
VAR=$(ssh "$USERNAME"@"$HOST" -- remote_command -option)
Вы хотите выполнить remote_command
удаленно и сохранить его в переменной локально. Это то, что делает вышеприведенная команда.
Если вы хотите выполнить многострочную команду удаленно использовать следующий построить с здесь документом:
VAR=$(ssh "$USERNAME"@"$HOST" <<EOF
remote_command -option
another_command
...
EOF
)
Btw, если вы не хотите интерполировать локальные переменные в удаленную команду, вы, вероятно, хотите, чтобы отключить локальную оболочку разложения в здесь документ, используя <<'EOF'
как стартовый разделитель (обратите внимание на '
):
VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF'
remote_command -option
another_command
...
EOF
)
в приведенной выше форме, вы можете использовать переменные оболочки, команды подстановки и т.д. в удаленном скрипте. Как это:
VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF'
COUNT=$(remote_command -option)
another_command "${COUNT}"
if $((COUNT+1)) ; then
foo -bar
fi
... and so on. all expansions happen remotely
EOF
)
хотел использовать этот формат, как между первой и последней строке я планирую написать большую логику, нужно выполнить на удаленной машине – chozhan
SSH $ USERNAME @ $ SUT << EOD COUNT = $ (ls -la | wc -l) , если [$ COUNT -eq 4]; затем remote_command2 fi EOD Планирование сделать что-то подобное. Интересно, если это возможно – chozhan
Используйте последнюю версию с '<< 'EOF'' в таком случае – hek2mgl