Mam skrypt powłoki z wieloma instrukcjami echa. Chcę poprzedzić każdą linię danych wyjściowych datą/godziną.Prefixing logi z datą w skrypcie powłoki
Więc otrzymuje każdy
echo "Some text1"
echo "Some text2"
z
echo "`date +%y/%m/%d_%H:%M:%S`:: some text1"
echo "`date +%y/%m/%d_%H:%M:%S`:: some text2"
jest to raczej brzydki. Czy istnieje mimo to utworzenie aliasu (lub analogu do # definicji w C), aby uczynić go czystszym.
Oczywiście, robi coś takiego:
DATE=`date +%y/%m/%d_%H:%M:%S`
echo "$DATE:: some text1"
echo "$DATE:: some text2"
... nie będzie działać, ponieważ w tym przypadku data jest obliczana tylko raz i każdy echo miałby tę samą datę.
Zastanawiam się nad zastąpieniem każdego echa wywołaniem funkcji drukowania, które wykonuje prefiks. Chcę wiedzieć, czy ktoś ma jakieś inne/lepsze pomysły.
Lepiej użyć '$ *' zamiast '$ @ 'wewnątrz większego ciągu (ponieważ jest to kontekst, w którym zachowanie" $ @ "' jest podzielone na arg-per-member jest aktywnie niepożądane) i lepiej używać składni deklaracji funkcji POSIX bez konkretnego powodu być z nią niezgodnym. –