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

How can I execute two shell functions at the same time?

我写了一个 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 获取它需要的所有 space 但在 function_one 完成之前开始并在 [=23 下面显示其输出=]. 这可能吗?我试过管道功能,例如:

function_one | function_two

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

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

的位置

管道将输出从一个命令发送到另一个命令(因此 function_two 在其标准输入上获得 function_one 的输出,这根本不是您想要的)。

如果您只是不想 function_two 等待 function_one 完成,请将 function_one 置于后台 &

function_one &
function_two

但是如果 function_one 没有完成打印,这将无法按您希望的方式工作。