Если вы хотите избегать выполнения оператора «if» каждый раз, когда хотите что-то записать, вы можете попробовать этот подход (как я это делаю).
Идея состоит в том, что вместо вызоваlog
, вместо этого вы звоните $echoLog
.Итак, если вы находитесь в подробном режиме, $echoLog
будет просто echo
, но в не подробном режиме это функция, которая ничего не печатает и просто игнорирует аргументы.
Вот код, который вы можете скопировать.
# Use `$echoLog` everywhere you print verbose logging messages to console
# By default, it is disabled and will be enabled with the `-v` or `--verbose` flags
declare echoLog='silentEcho'
function silentEcho() {
:
}
# Somewhere else in your script's setup, do something like this
while [[ $# > 0 ]]; do
case "$1" in
-v|--verbose) echoLog='echo'; ;;
esac
shift;
done
Теперь вы можете просто отбрасывать строки, как $echoLog "Doing something verbose log worthy"
, в любом месте.