相关疑难解决方法(0)

管道输出到bash功能

我在bash脚本中有一个简单的函数,我想将stdout作为输入传递给它.

jc_hms(){
  printf "$1"
}
Run Code Online (Sandbox Code Playgroud)

我想以这种方式使用它.

var=`echo "teststring" | jc_hms`
Run Code Online (Sandbox Code Playgroud)

当然我使用冗余函数echo和printf来简化问题,但是你明白了.现在我得到一个"未找到"错误,我认为这意味着我的参数分隔错误("$ 1"部分).有什么建议?

最初jc_hms函数的使用方式如下:

echo `jc_hms "teststring"` > //dev/tts/0
Run Code Online (Sandbox Code Playgroud)

但是我想先将结果存储在一个变量中,然后再将其发送到串口.

编辑:所以澄清一下,我不是想把东西打印到串口,我想接口我的bash函数应该是"|" 管道人物,我想知道这是否可行.

编辑:好的,这是完整的功能.

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

  printf "$hs:%02d:%02d" $min $sec
}
Run Code Online (Sandbox Code Playgroud)

我正在使用该函数来形成一行代码

songplaytime=`echo $songtime | awk '{print S1 }'`
printstring="`jc_hms $songplaytime`"  #store resulting string in printstring
Run Code Online (Sandbox Code Playgroud)

其中$ songtime是一个以空格分隔的"playtime totaltime"表示的字符串.

我希望我可以在一行中执行此操作,并在awk之后将其管道化

printstring=`echo $songtime | awk '{print S1 }' | jc_hms`
Run Code Online (Sandbox Code Playgroud)

像这样.

linux bash pipe

64
推荐指数
5
解决办法
6万
查看次数

标签 统计

bash ×1

linux ×1

pipe ×1