Je suppose que ce que vous faites dans votre allcommands.sh est :
command1.sh
command2.sh
Remplacez-le simplement par
command1.sh | sed "s/^/[command1] /"
command2.sh | sed "s/^/[command2] /"
Un exemple minimal de allcommands.sh
:
#!/bin/bash
for i in command{1,2}.sh; do
./"$i" | sed 's/^/['"${i%.sh}"'] /'
done
Avec command1.sh
et command2.sh
exécutable et dans le même répertoire juste echo
en saisissant les chaînes souhaitées, cela donne la sortie du 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
Rapide sed
panne
sed 's/^/['"${i%.sh}"'] /'
s/
passe en mode "correspondance et remplacement de motif d'expression régulière"^/
signifie "faire correspondre le début de chaque ligne"${i%.sh}
se produit dans le contexte du shell et signifie "$i
, mais supprimez le suffixe.sh
"['"${i%.sh}"'] /
imprime d'abord un[
, puis quitte le contexte cité pour saisir le$i
variable du shell, puis ressaisit pour finir avec le]
et un espace.