Eu estou tentando fazer um script modular. Eu tenho vários scripts / comandos que são chamados de um único script.
Eu quero prefixar a saída de cada comando separado.
Examle:
Meus arquivos são allcommands.sh / command1.sh / command2.sh
Saídas command1.sh
file exists
file moved
Saídas command2.sh
file copied
file emptied
allcommands.sh executa os scripts command1.sh e command2.sh
Quero prefixar cada saída desses dois scripts como este:
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied
linux
command-line
bash
shell
bash-scripting
Ivan Dokov
fonte
fonte
sed "s/\^/command1 /"
sed
funcionalidade. Eu sinto Muito.Respostas:
Suponho que o que você está fazendo no seu allcommands.sh é:
Apenas recoloque-o com
fonte
Um exemplo mínimo de
allcommands.sh
:Com
command1.sh
ecommand2.sh
executável e no mesmo diretório apenasecho
as strings desejadas, isso fornece a saída do shell:sed
Avaria rápidas/
entra no modo "correspondência de padrão regexp e substitui"^/
significa "coincidir com o início de cada linha"${i%.sh}
acontece no contexto do shell e significa "$i
, mas retira o sufixo.sh
"['"${i%.sh}"'] /
primeiro imprime a[
, sai do contexto citado para pegar a$i
variável do shell e depois entra novamente para terminar com o]
espaço e.fonte