如何同时执行两个shell函数?

时间:2015-02-12 19:06:00

标签: linux string function shell output

我编写了一个shell脚本,其中包含输出一些ASCII动画的函数。我想同时执行其中的两个功能,但让它们在另一个下面显示艺术,例如:

function_one(){
clear
printf %s '
______________
||__________||

'
sleep 1
tput home
printf %s '
______________
||__________||
      ||
      ||
      ||

'
sleep 1
tput home
printf %s '
______________
||__________||
      ||
      ||
      ||
||‾‾‾‾‾‾‾‾‾‾||
‾‾‾‾‾‾‾‾‾‾‾‾‾‾
'
}

想象一下这个函数会继续打印更多的ASCII字母,但是在它已经拍摄的同一组7行中我想要另一个函数启动:

function_two(){
sleep 10
printf %b "this is an example\r"
printf %b "this is more example\r"
printf %b "and some more\r"
}

function_two会暂停一段时间以允许function_one占用所需的所有空间但在function_one完成之前启动并在function_one下面显示其输出。 这可能吗?我试过管道功能,例如:

function_one | function_two

但这似乎只是执行function_two。 对不起,这不是最容易解释的事情,但我希望你能理解。 谢谢。

1 个答案:

答案 0 :(得分:2)

高级控制显示器上的打印位置并不是您可以轻松完成的事情。您需要指定绘制/ etc的位置。

管道将输出从一个命令发送到另一个命令(所以function_two在其标准输入上得到function_one的输出,而不是你想要的那样。

如果您不希望function_two等待function_one使用function_one在后​​台完成放置&

function_one &
function_two

但是如果function_one没有完成打印,那么这并不是你想要的方式。