Как выйти из скрипта в сеансе ssh?

Мой скрипт содержит команду ssh для входа на удаленный сервер и выполнения нескольких команд. Команда проверяет, существует ли файл, и если он не должен выходить из всего скрипта.

 ssh $user@$hostname "if[ -f $filename];then echo"file exists Proceeding next steps; else "echo file doesn't exist"; exit 1; fi" 

Однако приведенная выше команда выполняется успешно, если файл присутствует. Но в другом случае, если файл не существует, команда exit просто выходит из сеанса ssh

Он по-прежнему продолжается с другими командами в скрипте, а не с скриптом.

Пожалуйста, помогите мне с вашими предложениями.

Чтобы выполнить скрипт с ssh, которому нужны определенные переменные, которые были установлены ранее, например, ваше $filename , выполните следующие действия:

 ssh user@host 'bash -s' < local_script.sh "$filename" 

Содержание local_script.sh:

 #!/bin/bash [ $# -ne 1 ] && echo '$0 needs at least 1 parameter' 1>&2 && exit 2 filename="$1" if [ ! -f "$filename" ]; then echo "[ $filename ] does not exist" exit 1 fi echo "[ $filename ] exists" 

Если вам не нужны какие-либо переданные переменные в вашей команде, это работает:

 ssh user@host ' if [ ! -f "test/stuff" ]; then echo "File does not exist" exit 1 fi echo "File exists" ' 

Помните одинарные кавычки ' , они не позволяют вашей команде расширяться .

Кроме того, я проверил отсутствие несущественного имени $filename сначала для сокращения строк кода и использования вкладок / пробелов.

Чтобы сделать вашу команду более читаемой, попробуйте это

 ssh user@host <<'ENDSSH' if [ ! -f "test/stuff" ]; then echo "File does not exist" exit 1 fi echo "File exists" ENDSSH 

Источник