Presumo che ciò che stai facendo in allcommands.sh sia:
command1.sh
command2.sh
Basta collegarlo con
command1.sh | sed "s/^/[command1] /"
command2.sh | sed "s/^/[command2] /"
Un esempio minimo di allcommands.sh
:
#!/bin/bash
for i in command{1,2}.sh; do
./"$i" | sed 's/^/['"${i%.sh}"'] /'
done
Con command1.sh
e command2.sh
eseguibile e nella stessa directory solo echo
ing le stringhe desiderate, questo fornisce l'output della shell:
$ ./command1.sh
file exists
file moved
$ ./command2.sh
file copied
file emptied
$ ./allcommands.sh
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied
Veloce sed
ripartizione
sed 's/^/['"${i%.sh}"'] /'
s/
entra in modalità "corrispondenza modello regexp e sostituzione"^/
significa "corrisponde all'inizio di ogni riga"${i%.sh}
avviene nel contesto della shell e significa "$i
, ma rimuovi il suffisso.sh
"['"${i%.sh}"'] /
all'inizio stampa un[
, quindi esce dal contesto citato per prendere il$i
variabile dalla shell, quindi rientra per terminare con]
e uno spazio.