2013-04-29 80 views
1

我有一個小問題。基本上這個問題很簡單,但我的解決方案似乎不起作用。檢查父目錄的寫入權限

,我已經想出了劇本,去這樣的事情:

  1. 您通過目錄作爲$ 1參數。例如:./script.sh/Desktop/folder1/folder1submap/myfolder
  2. 如果結構/ folder1/folder1submap/myfolder不存在,我必須創建它。這裏沒有問題,但問題出現了,因爲我必須首先檢查該位置是否可寫。我正在用[-w「target」]命令測試它,但它不起作用,因爲如果文件夾不存在,-w總是爲false。而在我的情況下,它不。

    解決方案:是的,我可以檢查父文件夾,如果它是可寫的,但你不知道你是否會得到例如:/桌面/文件夾1或類似/ Desktop/folder1/folder2/folder3/folder4/folder5/so我無法像我想要的那樣輕鬆地檢查父文件夾的權限。準確地說,如果我從用戶獲得任意的長路徑,我無法知道哪個目錄是父目錄。

回答

1

一種選擇是使用dirname命令:

if [ ! -d "$1" ] && [ -w "$(dirname $1)" ]; then 
    mkdir "$1" 
fi 
+0

似乎這種解決方案並不工作。 $ 1在任何情況下都不是符號鏈接。 – RecursionSnake 2013-04-29 14:44:42

+0

你能更具體嗎? '$ 1/..'是一個完全有效的路徑(假設'$ 1'是一個目錄,而不是文件),你應該能夠測試它是否可寫,就像任何其他路徑一樣。 – chepner 2013-04-29 14:54:18

+0

是的,我可以離開。我已經測試過它: 如果[-w「/家/用戶名/桌面/文件夾」] 在這裏,我得到一個真實評價其爲預期(文件夾在我的桌面上存在的目錄) 。如果[-w「/家/用戶名/桌面/文件夾2/..」] 在這裏我得到一個錯誤的評估和folder2不存在我的桌面上! – RecursionSnake 2013-04-29 15:00:14