2016-03-22 89 views
0

我有一個這樣的腳本工作正常:組變量子shell

#!/bin/bash 

INBOUND=$(echo '5') 
OUTBOUND=$(echo '10') 

TOTAL=$(($INBOUND+$OUTBOUND)) 

echo "IN:$INBOUND OUT:$OUTBOUND T:$TOTAL" 

輸出:IN:5 OUT:10 T:15

現在假設,而不是echo 5echo 10我有需要每10秒運行兩個命令。

我不希望腳本運行10 + 10秒,所以我試圖對每個變量使用兩個子進程。

我想WHIS會的工作:

#!/bin/bash 

INBOUND=$(echo '5') & 
OUTBOUND=$(echo '10') 
wait 
TOTAL=$(($INBOUND+$OUTBOUND)) 

echo "IN:$INBOUND OUT:$OUTBOUND T:$TOTAL" 

但第一個變量沒有得到一個值,輸出是:IN: OUT:10 T:10

我如何可以設置在單獨的過程中的每個變種,所以腳本運行10秒而不是10 + 10?

+1

http://stackoverflow.com/questions/20017805/bash-capture-output-of-command-run-in-background – dekkard

回答

2

您需要使用(臨時)文件。

inbound_result=$(mktemp) 
outbound_result=$(mktemp) 
echo '5' > "$inbound_result" & 
echo '10' > "$outbound_result" & 
wait 
read inbound < "$inbound_result" 
read outbound < "$outbound_result" 
total=$((inbound + outbound)) 

echo "IN: $inbound OUT:$outbound T:$total" 
+0

工作就像一個魅力。謝謝! – Svperstar