Ich versuche ein modulares Skript zu erstellen. Ich habe mehrere Skripte / Befehle, die von einem einzigen Skript aufgerufen werden.
Ich möchte der Ausgabe jedes einzelnen Befehls ein Präfix voranstellen.
Beispiel:
Meine Dateien sind allcommands.sh / command1.sh / command2.sh
command1.sh Ausgängen
file exists
file moved
command2.sh Ausgängen
file copied
file emptied
allcommands.sh führt die Skripte command1.sh und command2.sh aus
Ich möchte jeder Ausgabe dieser beiden Skripte folgendes Präfix voranstellen:
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied
linux
command-line
bash
shell
bash-scripting
Ivan Dokov
quelle
quelle
sed "s/\^/command1 /"
sed
Funktionalität nicht wirklich . Es tut mir Leid.Antworten:
Ich gehe davon aus, dass Sie in allcommands.sh Folgendes tun:
Lass es einfach wieder los mit
quelle
Ein minimales Beispiel für
allcommands.sh
:Mit
command1.sh
undcommand2.sh
ausführbar und in demselben Verzeichnis, in dem sichecho
die gewünschten Zeichenfolgen befinden, erhalten Sie die Shell-Ausgabe:Schnelle
sed
Pannes/
Ruft den Modus "RegExp-Musterübereinstimmung und Ersetzen" auf^/
bedeutet "Finde den Anfang jeder Zeile"${i%.sh}
geschieht im Shell-Kontext und bedeutet "$i
, aber das Suffix entfernen.sh
"['"${i%.sh}"'] /
zuerst wird a gedruckt[
, dann der angegebene Kontext verlassen, um die$i
Variable aus der Shell zu holen , und dann erneut eingegeben, um mit dem]
und einem Leerzeichen abzuschließen.quelle