Как выполнить сценарий построчно для устранения неполадок?

Есть ли способ сделать это или лучший подход ?

У меня есть логическая ошибка в моем скрипте, и я хочу выполнить его построчно, делая паузу после каждой строки, чтобы я мог видеть, что происходит (проверка переменных, просмотр файлов и т. Д.) Перед выполнением следующей строки. echo var = $ var и cat file операторы после многих строк, но это сбивает с толку, и я думаю, что должен быть лучший способ. (Кстати, я не ищу программу для запуска, но хочу сделать это с помощью команд)

0
задан 28 November 2020 в 01:13

2 ответа

Если я понял вашу проблему, я думаю о двух очень простые и альтернативные решения:

  1. введите в терминале имя вашей скрипт-оболочки (например, csh .. Я не знаю) .. Появится приглашение, позволяющее вам вставить свои ins перевозки построчно (так что просто скопируйте их из своего скрипта и вставьте в терминал). Таким образом, вы можете видеть, что происходит на каждом шаге за раз.

или

  1. измените свой сценарий и вставьте команду «сна» (с последующим временным интервалом в секундах) перед вашей «критической» строкой, которая вызывает неожиданные ошибки . Работает как с csh, так и с sh. Например:

      # это скрипт
      #! / bin / sh
      линия 1
      строка 2
      sleep 200 # это означает 200 секунд паузы перед следующим действием
      строка 3
      и т.д..
     

В этом примере у вас есть время посмотреть в своем рабочем каталоге, каковы результаты ваших вычислений после выполнения строки 2, но до строки 3

0
ответ дан 3 January 2021 в 22:48

Из переполнения стека:

set -x или set -o xtrace раскрывает переменные и печатает небольшой знак + перед строкой.

set -v или set -o verbose не раскрывает переменные перед печатью.

Используйте set + x и set + v , чтобы выключить указанные выше настройки.

В первой строке скрипта можно указать #! / bin / sh -x (или -v ), чтобы иметь тот же эффект, что и set -x (или -v ) позже в скрипте.

Вышеупомянутое также работает с / bin / sh .

См. Bash- хакерские вики на установили атрибуты и на отладку .

$ cat shl
#!/bin/bash                                                                     

DIR=/tmp/so
ls $DIR

$ bash -x shl 
+ DIR=/tmp/so
+ ls /tmp/so
$
2
ответ дан 3 January 2021 в 22:48

Другие вопросы по тегам:

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