如何同时执行两个 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
没有完成打印,这将无法按您希望的方式工作。
我写了一个 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
没有完成打印,这将无法按您希望的方式工作。