Como la mayoría de los programas, rsync devuelve un estado distinto de cero si se produce un error. Dado que tiene set -e
en la parte superior de la secuencia de comandos, su secuencia de comandos saldrá con un estado distinto de cero si rsync lo hace.
Si desea realizar alguna recuperación si falla rsync, puede continuar y analizar el estado. Con set -e
, debe poner el comando rsync en un condicional para que el script no se cierre.
failures=0
…
if rsync …; then
echo "rsync succeeded"
else
echo "rsync failed"
failures=$((failures+1))
fi
…
if ((failures != 0)); then exit 1; fi
Si desea analizar el código de estado, un idioma común esstatus=0; rsync … || status=$?
:este comando siempre devuelve un estado de éxito ya que el comando en el lado derecho -del operador ||
siempre tiene éxito, y status
se establecerá en el estado del comando rsync.
status=0
rsync … || status=$?
if ((status != 0)); then
…
fi
Стандартная sed
вставка представляет собой
5i\
text here...
(включая обратную косую черту ). GNU sed имеет расширение , которое принимает текст в той же строке, что и команда i
, но если после i
есть обратная косая черта, это интерпретируется как обычное завершение команды -, хотя это все еще также не заставляет вас переходить на новую строку. Вы можете использовать
5i\\n\n\n
делать и то, и другое вместе. Это не экранированная обратная косая черта, а два разных вида обратной косой черты, расположенные рядом друг с другом. Такое поведение не задокументировано, но одинаково для команд и версий.
Возможно, вам будет проще использовать другое расширение GNU:
sed -e '5i\' -e '\n\n\n'
с разделением команды и текста на два -e
аргумента, чтобы избежать двусмысленности.