2016-02-29 45 views
-2
fileloc=/shellscript/ScriptDeleteLogs/Testfiles/Testdata/* 
for fname in fileloc 
do 
name=$(basename "$fileloc") 
if [ $name = $omitfiles ] then 
echo $name 
fi 
done 

我試圖擺脫目錄下的文件名,但是當我申請,如果條件它拋出錯誤,即語法錯誤附近意外的標記「科幻」過濾器,即和「然後」 格式化條件:下面的shell腳本中有什麼故障,因爲運行此腳本時出現「fi」錯誤?

if [ "$name" != "$omitfiles" ]; then echo $name fi

+4

使用'if [「$ name」=「$ omitfiles」];然後' – anubhava

+0

FYI'omitfiles'文件名數組需要省略 – IgnitedMind

+0

感謝anubhava ..但我的數組聲明-a omitfiles =(「App.log」「app.pid」「app_security.log」)',我改變了條件'if [「$ name」!=「$ omitfiles」]'.....仍然輸出顯示omitfiles中的文件內容。 – IgnitedMind

回答

3

要麼你如果條件後插入斷行:

... 
if [ "$name" = "$omitfiles" ] 
then 
... 

或者你把一個分號條件後:

... 
if [ "$name" = "$omitfiles" ]; then 
... 

當然,條件中的變量應該雙引號。

+0

是的,我正在按照分號的方式,stil輸出顯示數組** omitfiles **中的文件請參閱上面的格式化代碼。 – IgnitedMind

+1

你不會顯示'omitfiles'的內容,所以很難對此進行評論,但如果它真的是一個**數組**,就像你說的那樣,比較一個單獨的值(' $ name')到一個完整的數組('$ omitfiles')進行相等。在腳本的頂部添加'set -x',看看發生了什麼。 – user1934428