2015-02-12 2 views
0

Я написал сценарий оболочки с функциями, которые выводят некоторую анимацию 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. Извините, это не самая легкая вещь для объяснения, но я надеюсь, что вы поймете. Спасибо.

ответ

2

Продвинутый контроль над тем, где на дисплее на печать вы не можете сделать тривиально. Вам нужно указать, где рисовать/etc.

Трубы посылают выходные данные из одной команды в другую команду (так что function_two там получает на своем стандартном входе вывод от function_one, который совсем не то, что вы хотите).

Если вы просто не хотите function_two ждать function_one закончить ставить function_one в фоновом режиме с &.

function_one & 
function_two 

Но если function_one не делается печать это не будет работать так, как вы хотите.

Смежные вопросы