Eu queria brincar com a resposta do @Dennis Williamson. Aqui está o que eu tenho:
Run () {
if [ "$TEST" ]; then
echo "$*"
return 0
fi
eval "$@"
}
O eval "$@"
é importante aqui e é melhor do que simplesmente fazer $*
. $@
retorna todos os parâmetros e $*
retorna todos os parâmetros sem espaços / citações.
$ mkdir dir
$ touch dir/file1 dir/file2
$ FOO="dir/*"
$ TEST=true Run ls -l $FOO
ls -l dir/file1 dir/file2
$ Run ls -l $FOO
-rw-r--r-- 1 stefanl stefanl 0 Jun 2 21:06 dir/file1
-rw-r--r-- 1 stefanl stefanl 0 Jun 2 21:06 dir/file2