2012-09-26 22 views
0

我有一個腳本,正在盤點(不知道這是否是一個字)我的環境。測試命令:在日誌中重複標題行

它熄滅拉OS主機名,IP和ENV(DEV,督促等)..然後吐出所有的日誌文件

在我的腳本的頂部,我有一個檢查,看看是否日誌文件存在。

[[ -f $LOGFILE ]] || touch $LOGFILE && echo "ENV" "\t" "HOSTNAME" "\t" "OS" "\t" "IPADDRESS" 

我希望它做的是,如果存在,什麼也不做......否則觸摸和回聲頭文件。

當前每次運行都會回顯標題行。

+1

使用括號。 – Kevin

+0

是使用它們:[[-f aaa]] || (觸摸$ LOGFILE && echo「ENV」「\ t」「HOSTNAME」「」\ t「」OS「」\ t「」IPADDRESS「> $ LOGFILE) – MeaCulpa

回答

0

在同一行上混合||&&這樣會導致問題,如果||之後的命令成功。建議將其擴展爲完整的if聲明。

if [[ ... ]] 
then 
    ... 
else 
    ... 
fi 
0

您給出的代碼並不會將該行回顯到日誌文件。

[[ -f $LOGFILE ]] || printf "ENV\tHOSTNAME\tOS\tIPADDRESS" > $LOGFILE 

printf將「\ t」解釋爲製表符。您不需要touch命令,因爲該文件將被創建並打開以便通過輸出重定向進行寫入。