【问题标题】:How can I execute two shell functions at the same time?如何同时执行两个 shell 函数?
【发布时间】:2015-02-12 19:05:59
【问题描述】:

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

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。 对不起,这不是最容易解释的事情,但我希望你能理解。 谢谢。

【问题讨论】:

    标签: linux string function shell output


    【解决方案1】:

    对显示器上的打印位置进行高级控制并非易事。您需要指定在哪里绘制/等。

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

    如果您只是不想让function_two 等待function_one 完成,请将function_one& 放在后台。

    function_one &
    function_two
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      相关资源
      最近更新 更多