Вывод конвейера в функцию bash

У меня есть такая же простая функция в сценарии bash, и я хотел бы передать ей стандартный вывод в качестве входных данных.

jc_hms(){
  printf "$1"
}

Я хотел бы использовать его таким образом.

var=`echo "teststring" | jc_hms`

Конечно, я использовал избыточные функции echo и printf, чтобы упростить вопрос, но вы поняли идею. Прямо сейчас я получаю сообщение об ошибке «не найдено», что, как я полагаю, означает, что мой разделитель параметров неверен (часть «$ 1» ). Какие-либо предложения?

Первоначально функция jc _hms использовалась так:

echo `jc_hms "teststring"` > //dev/tts/0

но я хотел бы сначала сохранить результаты в переменной для дальнейшей обработки, прежде чем отправлять их на последовательный порт.

РЕДАКТИРОВАТЬ :Итак, чтобы уточнить, я НЕ пытаюсь печатать данные на последовательный порт, я хотел бы взаимодействовать с моими функциями bash, если «|» характер трубы, и мне интересно, возможно ли это.

РЕДАКТИРОВАТЬ :Хорошо, вот полная функция.

jc_hms(){
  hr=$(($1 / 3600))
  min=$(($1 / 60))
  sec=$(($1 % 60))

  printf "$hs:%02d:%02d" $min $sec
}

Я использую функцию для формирования строки из этой строки кода

songplaytime=`echo $songtime | awk '{print S1 }'`
printstring="`jc_hms $songplaytime`"  #store resulting string in printstring

Где $songtime — это строка, выраженная как «общее время воспроизведения», разделенная пробелом.

Я хотел бы просто сделать это в одной строке и передать после awk

printstring=`echo $songtime | awk '{print S1 }' | jc_hms`

вот так.

64
задан jliu83 12 July 2012 в 16:20
поделиться