2011-07-29 64 views
2

我有一個腳本。
我只需要執行一個特定的命令,我第一次嘗試在shell中運行這個腳本。否則,它不應該被執行,其餘的命令應該被完成。僅在shell中首次執行特定命令

我該如何實現?所有的指針都是受歡迎的。

感謝,


這就是我試圖執行代碼:

start_time=`date +%s` 
echo $script_instance 
if [ `echo $script_instance` == true ]; then 
    end_time=`date +%s` 
    echo '#########################################################################' 
    echo '# Build Date : '`date` 
    echo '# Compilation time : '`expr $end_time - $start_time` s 
    echo '#########################################################################' 
else 
    echo '-------------------------------------------------------------------------' 
    echo 'Updating the APIs' 
    echo '-------------------------------------------------------------------------' 
fi 
script_instance=true 
export $script_instance 

這不能正常工作。如果我在某個地方錯了,請糾正我。

+0

是否允許使用extern文件? – Nobody

回答

2

您可以設置環境變量在第一時間你正在運行的腳本:

  • CSH/tcsh中:setenv MYVARIABLE something
  • 慶典:export MYVARIABLE="something"

然後用if子句檢查如果變量已設置。如果是這樣,做其他的事情,如果不是,那麼這是腳本第一次執行。

+0

如何檢查變量是否設置? – Sen

+0

setenv是一個csh/tcsh命令 –

+1

@Marco Mariani thx,增加了bash版本。 @Sen你可以使用-z:'if [-z「$ MYVARIABLE」]檢查一個字符串是否爲空;然後;回聲「變量是空的」; fi' – timbooo

2

您應該檢查效果可能的腳本執行,而不是它已運行的事實。例如,它是否構建任何東西?如果是這樣,檢查預期的輸出。

否則,如果有任何失敗,只需創建一個標記文件touch $HOME/.some_hidden_file並檢查其存在。

設置變量在UNIX中不是永久的。

1

我不知道的情況下,但也許你可以從腳本在年底只是刪除可執行權限:

chmod a-x $0 

然後,直到你再次,你會不會chmod a+x <scriptname>能夠執行它。你會得到「權限被拒絕」。評論後

注:

在這種情況下,您可以拆分成腳本和always.sh firstonly.sh。在firstonly.sh和always.sh確實使用chmod a-x $0

[ -x firstonly.sh ] && ./firstonly.sh 

或者,你可以使用一些種類標誌的文件在其他的答案建議。

+0

好的..謝謝..但我想要的是像我有一個腳本文件,我有兩組命令 - 一組只需要執行,只是我第一次嘗試在shell中運行此腳本。如果我嘗試在同一個shell中運行相同的腳本,應避免使用第一組腳本。 – Sen