Мне нравится периодически добавлять некоторые данные в удаленный файл через ssh и удалять его локально. Подобно:

cat some_lines_to_append.txt | ssh user@example.com 'cat >> all_lines_collected.txt'
rm some_lines_to_append.txt

Теперь я хочу убедиться, что some_lines_to_append.txt удаляется, только если строки были успешно переданы. Как это сделать?

>> Создает ли какой-либо код возврата ошибки сам по себе, или cat в этом случае, и ssh доставит этот код возврата?

Будет ли сам shh ненулевые коды возврата в случае преждевременного завершения?

1 ответ1

1

cat вернет 0 (ноль) в случае успеха.

Согласно инструкции ssh :

СТАТУС ВЫХОДА

  ssh exits with the exit status of the remote command or with 255 if an error occurred.

Итак, в вашем случае достаточно

cat some_lines_to_append.txt |
   ssh user@example.com 'cat >> all_lines_collected.txt' &&
   rm some_lines_to_append.txt ||
   echo 'Error occurred.'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .