我编写了一个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。 对不起,这不是最容易解释的事情,但我希望你能理解。 谢谢。
答案 0 :(得分:2)
高级控制显示器上的打印位置并不是您可以轻松完成的事情。您需要指定绘制/ etc的位置。
管道将输出从一个命令发送到另一个命令(所以function_two
在其标准输入上得到function_one
的输出,而不是你想要的那样。
如果您不希望function_two
等待function_one
使用function_one
在后台完成放置&
。
function_one &
function_two
但是如果function_one
没有完成打印,那么这并不是你想要的方式。