Shell завершает работу, когда я использую скрипт с вызовом диалога / whiptail

Он не удаляет 4.txt , потому что вы выполняете команду rsync с * , т.е. на отдельные исходные файлы. Следовательно, rsync даже не рассматривает 4.txt (или содержащий его каталог). Вместо этого запустите его в каталоге, содержащем источники, изменив * на . Затем rsync может просмотреть каталог в целом, чтобы увидеть, чего не хватает.

rsync --exclude=3.txt -avcz --delete . ubuntu@server:/tmp/foo/
2
13.02.2019, 12:36
1 ответ

Ваш скрипт устанавливает флаг errexitс помощью set -e. После того, как вы его получите, непроверенные неудачные команды приведут к выходу из оболочки. Если вы используете программируемые сценарии завершения, некоторые из них могут запускать неудачную команду, что объясняет, почему завершение на вкладке -вызывает его.

Решение здесь состоит в том, чтобы не запускать сценарий, а запускать его как обычно, или заменить set -eна достаточную проверку ошибок для всех соответствующих команд и на return, если они не срабатывают. (Не exit, так как это приведет к закрытию всей оболочки, returnвозвращается из исходного скрипта.)

8
27.01.2020, 21:58

Теги

Похожие вопросы