我在一个Bash脚本中有一个简单的函数,我想将标准输出作为其输入进行管道操作。
jc_hms(){
printf "$1"
}
我想以这种方式使用它。
var=`echo "teststring" | jc_hms`
当然,我使用了冗余的echo和printf函数来简化问题,但你明白我的意思。现在我得到一个“not found”错误,我认为这意味着我的参数分隔有误("$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"。
我希望能够在一行中完成这个操作,并将其管道传递给awk。
printstring=`echo $songtime | awk '{print S1 }' | jc_hms`
就像这样。
jc_hms
在管道的接收端,那么标准输入将被呈现给函数内部的第一个命令。但是,请发布jc_hms
的真实样貌,以便我们确定您情况下的最佳解决方案。 - chepnerjc_hms() { hr=$(($1 / 3600)); min=$((($1 % 3600) / 60)); sec=$((1 % 60)); printf "$hs:%02d:%02d" $min $sec; }
- Jo So