2011-03-28 120 views
0

我正試圖編寫一個小腳本來安裝我當前使用的cms的擴展。但是,當我將我的ssh放入我的盒子時,我不想總想看看我是否在正確的目錄中安裝了我的擴展。相反,我想只運行一個命令,並在該命令中檢查當前工作目錄,然後將該目錄的結尾與我預先定義的目錄進行比較。將我的當前目錄與unix中的預定義目錄進行比較

例如,我安裝我的擴展,你猜對了,extensions文件夾。假設我運行pwd並且吐出/home/site.com/not_extensions_directory/。然後腳本會看到當前目錄不是extensions,那麼我可以殺死安裝並打印出警告。

一個更好的解決辦法是讓腳本檢測,我不是在正確的目錄,然後給用戶提示

would you like to switch to the "extensions" directory to continue installing (yes/no)?

將正確的語法是什麼在UNIX這樣做盒子(兩種解決方案)?

+0

@shellter - 登錄時不會發生這種情況。這是我運行的東西,如果我設立了一個新的網站實例。我不是完全管理這個盒子的系統,因爲它不在我的聯盟ATM中(並且未來的概率= X)。另外,如果我在將來安裝新的擴展程序,我可能想要擴展此功能。 – hellatan 2011-03-28 15:22:37

回答

0

把它放在腳本的頂部。將/path/to/extensions替換爲您的extensions文件夾。

CURRENT_DIR="$(cd "$(dirname "$0")" && pwd)" 

if [ $CURRENT_DIR != /path/to/extensions ]; then 
    echo "This script needs to be run from /path/to/extensions" 
    exit 1 
fi 
+0

這是一個很好的開始...嘗試一些更動態的B/C我有多個網站,不同的文件夾路徑到'extensions'文件夾。然而,當我在'$ CURRENT_DIR'上執行'echo'時,我收到了這個警告:'dirname:invalid option - b。嘗試使用dirname --help'以獲得更多信息.' – hellatan 2011-03-28 15:30:07

+1

您已經在bash登錄shell下原樣運行了shell片段。 「$ 0」擴展爲「-bash」(由sshd設置),dirname將其理解爲不支持的選項集羣選項組,以「-b」開頭。 – pilcrow 2011-03-29 05:06:15

相關問題