Wyjście rury do funkcji bash
Mam prostą funkcję w skrypcie bash i chciałbym potraktować stdout jako wejście.
jc_hms(){
printf "$1"
}
Chciałbym go użyć w ten sposób.
var=`echo "teststring" | jc_hms`
Oczywiście użyłem funkcji nadmiarowych echo i printf, aby uprościć pytanie, ale masz pomysł. W tej chwili pojawia się błąd „nie znaleziono”, który, jak zakładam, oznacza, że granice parametrów są nieprawidłowe (część „$ 1”). Jakieś sugestie?
Pierwotnie użyto funkcji jc_hms w następujący sposób:
echo `jc_hms "teststring"` > //dev/tts/0
ale chciałbym najpierw zapisać wyniki w zmiennej do dalszego przetwarzania, przed wysłaniem ich do portu szeregowego.
EDYCJA: Aby wyjaśnić, NIE próbuję drukować rzeczy do portu szeregowego, chciałbym interfejs do moich funkcji bash powinien być „|” fajka i zastanawiam się, czy to możliwe.
EDYCJA: Dobra, oto pełna funkcja.
jc_hms(){
hr=$(($1 / 3600))
min=$(($1 / 60))
sec=$(($1 % 60))
printf "$hs:%02d:%02d" $min $sec
}
Korzystam z funkcji, aby utworzyć ciąg, który pochodzi z tego wiersza kodu
songplaytime=`echo $songtime | awk '{print S1 }'`
printstring="`jc_hms $songplaytime`" #store resulting string in printstring
Gdzie $ songtime jest ciągiem wyrażonym jako „całkowity czas odtwarzania” ograniczony spacją.
Chciałbym po prostu zrobić to w jednej linii i potokować po awk
printstring=`echo $songtime | awk '{print S1 }' | jc_hms`
tak.