Ist es möglich, eine Shell-Funktion zu überschreiben und einen Verweis auf den ursprünglichen zu behalten?Überschreiben Sie eine Shell-Funktion, behalten Sie einen Verweis auf das Original
f() { echo original; }
f() { echo wrapper; ...; }
f
Der Ausgang dieses sollte sein:
wrapper
original
Ist das möglich in einem halb tragbare Art und Weise?
Begründung: Ich versuche mein Programm zu testen, indem ich Teile davon durch Shell-Funktionen ersetze, die ihre Aufrufe in einer Protokolldatei aufzeichnen. Das funktioniert gut, solange ich nur Kommandos und Built-Ins umschließe, und solange es mir nichts ausmacht, wahllos zu loggen. Jetzt möchte ich die Test-Suite wartbarer machen, indem ich nur das interessante Stück in jedem Test aufnehme.
Also lassen Sie uns sagen, dass mein Programm von
f
g
h
besteht, wo f
, g
, h
alle Shell-Funktionen sind, und ich möchte die Ausführung von nur g
verfolgen.
was Sie getan werden kann, aber nicht sehr portabel. –