2014-04-09 110 views
1

我有一個bash腳本。如何同時運行命令

f1() 
{ 
    for ((i=1; i<6; i++)) 
    do 
     a=$(echo -e "\033[41m ")   
     echo -n " $a"; 
     echo -en "\033[0m"; 
     sleep 1; 
     echo -en "\b"; 
     echo -n ' ' 
    done 
} 

f2() 
{ 

    a=$(echo -e "\033[41m \033[0m") 
    echo -en "\033[5;50H$a" 
    for ((i=1; i<6; i++)) 
    do 
     echo -en "\b" 
     echo -en ' ' 
     echo -en "\b\b" 
     echo -n "$a" 
     sleep 1 
     echo -en "\033[0m" 
    done 
} 

f1 
f2 

f1將對象向右移動; f2將另一個物體向左移動;

我能做些什麼,同時執行兩個功能,讓我看到兩個對象在同一時間動?

#this wont work 
f1 & 
f2 & 
+0

我裝並行,雖然我在回答中運行代碼後收到錯誤消息。 – computer10

+0

什麼錯誤信息? – agilob

+0

錯誤消息是:parallel:輸入是從終端讀取的。只有專家纔會這樣做。按CTRL-D退出。 – computer10

回答

1

在後臺並行運行它們:

#export functions so parallel can see them 
    export -f f1 
    export -f f2 
    #run both functions 
    parallel f1 f2 
+0

我試過這個,它沒有按預期工作。 – computer10

+0

也是,'wait'也很有用。因爲它在等待所有子過程完成之前就完成了。要運行一些真正的同時,谷歌'GNU parallel' –

+0

哦,真的,我不明白的最後一行,則需要使用[此並行(https://stackoverflow.com/questions/6384013/run-bash - 命令功能於平行軌道結果和計數)。 – agilob