I'm writing a shell script that loops over some values and run a long command line for each value. I'd like to print out these commands along the way, just like make
does when running a makefile. I know I could just "echo" all commands before running them, but it feels inelegant. So I'm looking at set -x
and similar mechanisms instead :
#!/bin/sh
for value in a long list of values
do
set -v
touch $value # imagine a complicated invocation here
set +v
done
My problem is: at each iteration, not only is the interresting line printed out, but also the set +x
line as well. Is it somehow possible to prevent that ? If not, what workaround do you recommend ?
PS: the MWE above uses sh
, but I also have bash
and zsh
installed in case that helps.