Рейтинг:1

как заставить bash работать только с частью скрипта

флаг ws

Когда я тестирую сценарий bash, я устанавливаю команду выхода, чтобы ограничить все только первой частью кода.

Но bash всегда имеет дело со всем сценарием, выдает сообщения об ошибках коду ниже команды выхода.

У меня есть только решение закомментировать все ниже моего отладочного выхода.

Это неудобно, и этот пункт существует уже 30 лет.

Есть ли тем временем в bash что-то вроде __END__ в perl?

В какой-то оболочке, соотв. в Emacs несколько лет назад была возможность выделить часть кода и запустить подоболочку для этого выделенного кода.

В kubuntu 20.04 такого не могу найти, в vim.

Но это не было бы желаемым решением, так как оно требует большой работы.

С уважением антондхид

флаг hr
Можете ли вы добавить короткий воспроизводимый пример того, что «выход» не работает?
terdon avatar
флаг cn
Можете ли вы объяснить, почему неудобно просто закомментировать остальные? Любой приличный редактор и, конечно, все IDE предложат простой ярлык для комментирования/раскомментирования кода, поэтому нужно выбрать его и нажать ярлык. Например, в моем emacs я могу переключать комментирование с помощью сочетания клавиш `C-c c`, которое привязано к `comment-or-uncomment-region`.
Artur Meinild avatar
флаг vn
Создайте свой сценарий, используя функции. Таким образом, вы можете иметь много кода, но вызывать только те функции, которые вам нужны. Для простого исправления вы можете сделать всю часть скрипта, которую вы не хотите запускать, функцией, поэтому вам нужно добавить: `unused() {` до и `}` после.
флаг ar
Пожалуйста, [отредактируйте свой вопрос](https://askubuntu.com/posts/1394155/edit) и добавьте, как вы вызываете скрипт. Например, двойным щелчком, `./scriptname`, `bash scriptname` или каким-либо другим способом. Также включите короткий сценарий. Я не могу воспроизвести эту проблему с помощью 4-строчного скрипта: `#!/bin/bash` µ `эхо первой строки` µ `exit` µ `эхо второй строки` µ например.
terdon avatar
флаг cn
@user68186 user68186 Я думаю, что ОП говорит об искаженных строках после «выхода», поэтому ваш скрипт не воспроизведет их, но я также не могу воспроизвести с искаженными строками. Bash читает сценарий строка за строкой, поэтому он не должен жаловаться на плохие строки после вызова выхода.
флаг ar
@terdon Я согласен. То, что следует после `exit`, искаженное или нет, вообще не должно выполняться. Я использую «выход» в bash все время, обычно с условием «если» без каких-либо проблем.
Terrance avatar
флаг id
Вы всегда можете запустить `bash -x ./scriptfile.bsh`, чтобы показать вам строки, как они выполняются в вашем скрипте.
waltinator avatar
флаг it
Всегда вставляйте свой скрипт в `https://shellcheck.net`, средство проверки синтаксиса или устанавливайте `shellcheck` локально. Сделайте использование `shellcheck` частью вашего процесса разработки.
Anton Wessel avatar
флаг ws
Спасибо за множество ответов.Утилита "shellcheck" мне теперь известна, но bash не должен иметь описанной проблемы даже без интернета и без shellcheck., а только

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.