Возможность пробного запуска: как сделать функцию, которая печатает либо команды, либо выполняет их

1

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

Я пытаюсь создать функцию, которая работает в режиме «всухую» или в режиме реального времени.

например (псевдокод):

function do-stuff() {
   dry_run_or_real 
   brew install java
   for x in dir ; do echo $x ; done
}

function dry_run_or_real() {
   if [ ! -z "$GLOBAL_DRY_RUN" ] ; then 
      echo "We would do this:$*"
   else 
      # we are actually running the code
      $* 
   fi
}

Если установлен GLOBAL_DRY_RUN, это текст:

We would do this:
brew install java
for x in dir ; do echo $x ; done

НО вышеуказанные команды не будут выполнены.

Большим ограничением является то, что тело do-stuff должно иметь только минимальные изменения для поддержки кода пробного запуска:

  1. у нас будет много, много вспомогательных функций

  2. Функции будут добавлены и отредактированы неопытными разработчиками, поэтому, возможно, что-нибудь сложное будет сломано.

Pat
источник
Не совсем понятно, какова ваша цель. Ваш пример просто потребует, чтобы автор функции предоставил тест. Кроме того, способ, которым вы вкладываете это, усложнит контроль. Ваш do-stuff понадобится что-то вроде if(dry_run_or_real()){return;} просто "прервать" выполнение. Вы не можете реально влиять на внешний слой вложения. Таким образом, вы не сможете «фактически запустить код» в своей тестовой функции.
Seth