Was ist die beste Möglichkeit, eine Umleitung in Bash zu Test- und Debugging-Zwecken unter bestimmten Bedingungen durchzuführen?
In meinen Skripten füge ich eine Debug-Option hinzu, um zu zeigen, was bei einem Testlauf ohne Verarbeitung tatsächlich passiert wäre. Wenn die Debug-Option aktiviert ist, soll die DEBUG-Option eine Skriptzeile mit Umleitung wiedergeben, die die Umleitung effektiv wiedergibt und das Echo nicht umleitet . Ein Beispiel würde dies wahrscheinlich besser erklären:
In einem Skript, das einen mysqldump mit den ihm übergebenen args ausführt, möchte ich, dass die debug-Option den mysqldump-Befehl so anzeigt, wie er ohne die Option -d ausgeführt worden wäre.
[ "-d" = "$1" ] && DEBUG=echo
$DEBUG mysqldump -u"$user" -p"$pass" -h"$host" "$dbase" > $dbase.sql.dump
Wenn ich also DEBUG als "echo" ausgeben möchte, möchte ich NICHT zu "$ dbase.sql.dump" zurückkehren. Eigentlich möchte ich die Variablen ">" und "$ dbase" mit ".sql.dump" ausgeben "text. Wenn die Debug-Option nicht aktiviert ist, möchte ich den Befehl so ausführen, wie er ist.
Die set -x
und set -v
-Optionen sind hier nicht wirklich die Antwort, da das Debuggen wirklich nur eine Testausgabe- / Probelaufoption ist, die der Benutzer sehen kann und das Skript nicht wirklich debuggt, um Codierungsprobleme zu beheben.