Каков наилучший способ условно выполнить перенаправление в Bash для целей тестирования и отладки?
В моих сценариях я добавляю опцию отладки, чтобы показать, что было бы эффективно при выполнении тестового прогона без какой-либо обработки. Если опция отладки включена, я хочу, чтобы опция DEBUG отображала строку сценария с перенаправлением, эффективно повторяя перенаправление и не перенаправляя эхо. Пример, вероятно, объяснит это лучше:
В сценарии, который будет выполнять mysqldump, используя переданные ему аргументы, я бы хотел, чтобы опция отладки показывала команду mysqldump так, как она бы выполнялась, если бы не опция -d.
[ "-d" = "$1" ] && DEBUG=echo
$DEBUG mysqldump -u"$user" -p"$pass" -h"$host" "$dbase" > $dbase.sql.dump
Поэтому, если я повторяю причину, по которой DEBUG имеет значение "echo", я НЕ хочу отображать "$ dbase.sql.dump". Я действительно хочу отобразить переменную ">" и "$ dbase" с помощью ".sql.dump". "текст. Если опция отладки не включена, я хочу выполнить команду как есть.
Параметры set -x
и set -v
самом деле не являются ответом здесь, так как отладка - это всего лишь опция тестового вывода / пробного запуска, которую может видеть пользователь, а не отладка сценария для устранения проблем кодирования.