2016-03-17 139 views
0

這個問題可能看起來很愚蠢,但我很難過,不知道哪裏出了什麼問題。 無論如何,我有一段代碼來檢查一個特定的文件是否存在於一個目錄中。 該代碼工作正常的文件,正常的文件,我的意思是..這種類型的東西「abc.xlsx或xaga1.xlsx」。問題是當我通過一個文件的空間,它似乎失敗了,我的意思是..檢查失敗。 我就直奔代碼:檢查文件是否存在於特定目錄的shell中

if [ ! -e "$file" ] 
then 
    echo_time "ERROR: $file does not exist - aborting" >> $fileChangedLog 
    exit 1 
fi 

如果我到輸出重定向日誌文件檢查,我可以看到下面一行:

[03/17/16 11:07:09] ERROR: "/opt/just4share/tellabs/tellabs_nodes 2.xlsx" does not exist - aborting 

,但如果我LS錯誤路徑我得到下面的輸出:

[[email protected] scripts]$ ls -lrt "/opt/just4share/tellabs/tellabs_nodes 2.xlsx" 
-rw-rw-r--+ 1 netcool ncoadmin 17412 Mar 17 10:43 /opt/just4share/tellabs/tellabs_nodes 2.xlsx 

這證實然而該文件存在,我的代碼沒有找到它。我在這裏做錯了什麼? :|

編輯:我也曾嘗試-f開關代替-e開關

+0

它看起來像你的'$ file'變量包含雙引號,所以搜索到的文件是'「/選擇...'不是'/ opt ...'(這個日誌消息很清楚)$變量'file'是如何構造的? –

回答

-1

嘛,我想通這個問題,我是附加雙引號字符的路徑變量$文件試圖用雙引號將路徑括起來,刪除雙引號就行了。

舊代碼:

file="\"$directory/$file\"" 

新代碼:

file="$directory/$file" 
+0

在這個問題中沒有任何地方顯示這個代碼,這對於除了你之外的任何人都毫無用處 – 123

+0

@ 123這是另一個腳本的一部分,但是,考慮到這一點,我將這部分解決方案考慮在內比我更加直觀地解決問題。 –

相關問題