Piszę skrypt powłoki, który wykonuje pętlę nad niektórymi wartościami i uruchamia długi wiersz poleceń dla każdej wartości. Chciałbym wydrukować te polecenia po drodze, tak jak robi to make
podczas uruchamiania pliku Makefile. Wiem, że mogłem po prostu "odbić" wszystkie polecenia przed ich uruchomieniem, ale wydaje mi się to nieeleganckie. Więc patrzę na set -x
i podobnych mechanizmów Zamiast:jak wyłączyć dyskretnie xtrace w skrypcie powłoki?
#!/bin/sh
for value in a long list of values
do
set -v
touch $value # imagine a complicated invocation here
set +v
done
Mój problem jest: w każdej iteracji, nie tylko jest interresting linia wydrukowany, ale również linia set +x
również. Czy można temu zapobiec? Jeśli nie, jakie obejście zalecasz?
PS: powyższy MWE używa sh
, ale mam również zainstalowane bash
i zsh
w razie potrzeby.
Możliwe duplikat [bash + X, przy czym nie jest drukowana] (http://stackoverflow.com/questions/13195655/bash-set-x-without-it-being-printed) – Beetle