私はbashスクリプトに単純な機能を持っており、stdoutを入力としてパイプしたいと思います。
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 は、スペースで区切られた "playtime totaltime" として表される文字列です。
これを1行で実行して、awkの後にパイプできたらいいのにと思います
printstring=`echo $songtime | awk '{print S1 }' | jc_hms`
そのようです。