Próbuję stworzyć modułowy skrypt. Mam kilka skryptów / poleceń, które są wywoływane z jednego skryptu.
Chcę prefiksować dane wyjściowe każdego oddzielnego polecenia.
Przykład:
Moje pliki to allcommands.sh / command1.sh / command2.sh
command1.sh wyjścia
file exists
file moved
command2.sh wyjścia
file copied
file emptied
allcommands.sh uruchamia skrypty command1.sh i command2.sh
Chcę poprzedzić każde wyjście tych dwóch skryptów w następujący sposób:
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied
linux
command-line
bash
shell
bash-scripting
Ivan Dokov
źródło
źródło
sed "s/\^/command1 /"
sed
funkcjonalności. Przykro mi.Odpowiedzi:
Zakładam, że to, co robisz w swoich allcommands.sh, to:
Po prostu przywróć to
źródło
Minimalny przykład
allcommands.sh
:Za pomocą
command1.sh
icommand2.sh
wykonywalnego oraz w tym samym katalogu tylkoecho
szukając ciągów, daje to wynik powłoki:Szybki
sed
podziałs/
przechodzi w tryb „dopasuj wyrażenie regularne i zamień”^/
oznacza „dopasuj początek każdej linii”${i%.sh}
dzieje się w kontekście powłoki i oznacza „$i
, ale usuń przyrostek.sh
”['"${i%.sh}"'] /
na początku wypisuje a[
, następnie wychodzi z cytowanego kontekstu, aby pobrać$i
zmienną z powłoki, a następnie ponownie wchodzi, aby zakończyć z]
i spacją.źródło