Как читать весь скрипт оболочки перед его исполнением?

Обычно, если вы редактируете скрипт, все запущенные сценарии скрипта подвержены ошибкам.

Насколько я понимаю, bash (другие оболочки тоже?) читают скрипт постепенно, поэтому, если вы изменили файл сценария извне, он начинает читать неправильные вещи. Есть ли способ предотвратить это?

Пример:

sleep 20

echo test

Если вы выполните этот скрипт, bash прочитает первую строку (скажем, 10 байт) и перейдет в режим сна. Когда он возобновится, в скрипте, начиная с 10-го байта, может быть различное содержимое. Я могу быть в середине строки в новом скрипте. Таким образом, скрипт работает.

33 голоса | спросил VasyaNovikov 21 WedEurope/Moscow2016-12-21T10:55:33+03:00Europe/Moscow12bEurope/MoscowWed, 21 Dec 2016 10:55:33 +0300 2016, 10:55:33

1 ответ


12

Вам просто нужно удалить файл (то есть скопировать его, удалить, переименовать копию обратно в исходное имя). На самом деле многие редакторы могут быть настроены для этого. Когда вы редактируете файл и сохраняете в нем измененный буфер, вместо того, чтобы перезаписывать файл, он переименует старый файл, создаст новый и поместит новое содержимое в новый файл. Следовательно, любой исполняемый скрипт должен работать без проблем.

Используя простую систему управления версиями, такую ​​как RCS, которая легко доступна для vim и emacs, вы получаете двойное преимущество в том, что у вас есть история изменений, и система проверки должна по умолчанию удалять текущий файл и воссоздавать его с помощью правильные режимы. (Остерегайтесь жесткой связи таких файлов, конечно).

ответил meuh 21 WedEurope/Moscow2016-12-21T11:52:19+03:00Europe/Moscow12bEurope/MoscowWed, 21 Dec 2016 11:52:19 +0300 2016, 11:52:19

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132