Есть ли способ сделать это или лучший подход ?
У меня есть логическая ошибка в моем скрипте, и я хочу выполнить его построчно, делая паузу после каждой строки, чтобы я мог видеть, что происходит (проверка переменных, просмотр файлов и т. Д.) Перед выполнением следующей строки. echo var = $ var
и cat file
операторы после многих строк, но это сбивает с толку, и я думаю, что должен быть лучший способ. (Кстати, я не ищу программу для запуска, но хочу сделать это с помощью команд)
Если я понял вашу проблему, я думаю о двух очень простые и альтернативные решения:
или
измените свой сценарий и вставьте команду «сна» (с последующим временным интервалом в секундах) перед вашей «критической» строкой, которая вызывает неожиданные ошибки . Работает как с csh, так и с sh. Например:
# это скрипт
#! / bin / sh
линия 1
строка 2
sleep 200 # это означает 200 секунд паузы перед следующим действием
строка 3
и т.д..
В этом примере у вас есть время посмотреть в своем рабочем каталоге, каковы результаты ваших вычислений после выполнения строки 2, но до строки 3
Из переполнения стека:
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
$