我正在編寫一個批處理腳本bash,需要先檢查是否存在一個文件夾以知道是否運行某個將創建並填充夾。我之前做過類似的事情,在改變目錄和從存儲變量中查找目錄方面做得很好,但由於某種原因,我只是在這裏丟失了一些東西。在bash shell腳本中檢查目錄的問題
下面大致介紹腳本的工作原理。
if [ -d "$net_output" ]
then
echo "directory exists"
else
echo "directory does not exist"
fi
當我運行這個腳本時,我通常會在前面的行中回顯$ net_output,看看它會評估什麼。當腳本運行時,我得到我的代碼塊說「目錄不存在」,但是當我然後複製粘貼之前回顯的$ net_output目錄路徑到shell終端中時,它改變目錄就好了,證明目錄確實存在。我在戴爾機器上使用Ubuntu 12.04。
非常感謝您提供任何幫助。讓我知道我可以提供什麼額外的信息。
你確定你已經獲得'$ net_output'的預期值嗎?有沒有可能它的值是一個你不在的目錄的相對路徑?代碼本身似乎很好,所以我會檢查這個值,以確保它是你期望的 – Cfreak 2012-07-17 16:12:51
另一種可能性是它實際上是一個目錄的符號鏈接,在這種情況下'cd'可以工作,但是'[-d .. 。]'將返回false ... – twalberg 2012-07-17 16:22:38
@twalberg:測試必須成功獲得有效的符號鏈接。從標準:'除-h路徑名和-L路徑名初選外,如果路徑名參數是符號鏈接,則測試應通過解析符號鏈接並使用鏈接引用的文件來評估表達式。' – 2012-07-17 17:41:52