2012-06-12 47 views
0

所以我是bash的新手,我正在爲build-essentialOpenSSL做安裝。問題是,它總是在第一個exec行後停止。這裏是我的代碼:將bash腳本重定向到/ dev/null不執行?

#!/bin/bash 
echo "Installing build-essential" 
exec sudo apt-get install build-essential > /dev/null 2>&1 
echo "Finished installing build-essential" 
echo "" 

echo "Installing OpenSSL" 
exec sudo apt-get install openssl > /dev/null 2>&1 
echo "Finished installing OpenSSL" 
echo "" 

echo "Updates complete!" 

而這裏的輸出:

Installing build-essential 
[sudo] password for matthew: 

請保持在我剛開始幾個小時前的頭腦。對於轉儲問題抱歉。

+0

你爲什麼要把exec放在那裏? –

回答

3

exec永遠不會返回到調用腳本。它使用exec後的命令替換當前進程。只需完全刪除exec,然後讓apt-get像任何其他命令一樣運行。

注:也有exec使用了返回到調用腳本,比如那些只 I/O重定向。

+0

exec用於替換當前進程時不會返回,但當僅用於管理文件描述符時,它不會暫停當前腳本。刪除exec是正確的做法,但解釋有誤導性。 –

+0

良好的說明,我會將其添加到我的答案 – chepner