Pipe-Ausgabe zur Bash-Funktion

Ich habe eine einfache Funktion in einem Bash-Skript und möchte stdout als Eingabe übergeben.

jc_hms(){
  printf "$1"
}

Ich würde es gerne so benutzen.

var=`echo "teststring" | jc_hms`

Natürlich habe ich redundante Funktionen echo und printf verwendet, um die Frage zu vereinfachen, aber Sie haben die Idee. Im Moment wird der Fehler "Nicht gefunden" angezeigt. Dies bedeutet, dass die Parameterbegrenzung falsch ist (der Teil "$ 1"). Irgendwelche Vorschläge?

Ursprünglich wurde die Funktion jc_hms folgendermaßen verwendet:

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

aber ich möchte die ergebnisse zuerst in einer variablen für die weitere verarbeitung speichern, bevor sie an die serielle schnittstelle gesendet werden.

EDIT: Um dies zu verdeutlichen, versuche ich NICHT, Daten über die serielle Schnittstelle zu drucken. Ich möchte eine Schnittstelle zu meinen Bash-Funktionen herstellen, sollte das "|" Pipe-Charakter, und ich frage mich, ob dies möglich ist.

EDIT: Okay, hier ist die volle Funktion.

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

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

Ich benutze die Funktion, um eine Zeichenfolge zu bilden, die diese Codezeile kommt

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

Wobei $ songtime eine Zeichenfolge ist, die als "playtime totaltime" ausgedrückt wird und durch ein Leerzeichen begrenzt wird.

Ich wünschte, ich könnte das einfach in einer Zeile tun und es nach der awk leiten

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

wie so.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage