Как выйти из скрипта в сеансе 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

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

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

  • Команда для объединения всех окон терминала?
  • Переменная переменной оболочки gnuplot и массивы
  • Сценарий оболочки, в котором выполняется mono_service.exe в качестве фоновой задачи
  • как заставить Expect ждать завершения другого скрипта
  • Требуется вывод в хорошем формате с использованием сценария оболочки
  • Совместное использование переменных в сценариях подшивки
  • как написать `fuser -k -n tcp 80` в скрипт bash?
  • Как перенаправить вывод в журнал из команды wait
  • One Solution collect form web for “Как выйти из скрипта в сеансе 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 

    Источник

    Linux и Unix - лучшая ОС в мире.