set -o verbose in shell functions

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

set -o verbose in shell functions

Beitrag von linuxCowboy » 14.02.2022 13:10:05

Wie kann ich in Shell Funktionen 'set -v' aktivieren?

Code: Alles auswählen

 $ Fsetv () { set -v; echo $-; uname; set +v;}

 $ Fsetv 
himvBHs
Linux
Entweder ist das ein Bug oder es wurde expliziet deaktiviert.

PS: Ich spreche nicht von 'set -x'.

(z.B. 'ls **/*.c')
-der_linux_cowboy --- Besser werden! ... f*** w$$

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: set -o verbose in shell functions

Beitrag von tobo » 14.02.2022 17:48:00

linuxCowboy hat geschrieben: ↑ zum Beitrag ↑
14.02.2022 13:10:05
Entweder ist das ein Bug oder es wurde expliziet deaktiviert.
Weder noch, würde ich sagen. Set -v gibt die entsprechenden Zeilen aus, wenn sie gelesen werden, nicht wenn sie ausgeführt werden. Durch die Definition der Funktion wird der Inhalt der Funktion, der Shell, bekannt gemacht. Da der Funktionsinhalt also fortan bekannt ist, muss er damit auch nicht jedesmal neu eingelesen werden, bevor er ausgeführt wird. Das wäre meine (editierte) Erkärung...

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: set -o verbose in shell functions

Beitrag von linuxCowboy » 14.02.2022 19:48:03

Guter, logischer Punkt. Danke.

Wäre dann ein nice-to-have Feature, das ergänzt werden müßte!

(my) workaround:

Code: Alles auswählen

echo                             '/expression/g' '*.c *.h'
perl -nE 'say "$ARGV: [$1] $2" if /expression/g'  *.c *.h
Die Zeile kopieren und den wesentlichen Teil selber ausgeben.
-der_linux_cowboy --- Besser werden! ... f*** w$$

Antworten