2016-12-05 151 views
0

此處新增。我需要使用postinstall腳本將文件和文件夾移動到Mac上的用戶應用程序支持文件夾。對於文件,我只想在文件不存在的情況下移動它。如果存在,我不想覆蓋它。這是我的腳本。它運行但沒有被複制。我正在使用Packages應用程序,順便說一句,這個腳本被加載到postinstall腳本標籤中。在Mac上安裝後安裝腳本的幫助

#!/bin/sh 
if ! "/Library/Application Support/MyApp/MyApp user dict"; then 
mv "$1/Contents/Resources/MyApp user dict" "/Library/Application Support/MyApp/."; 
fi 

mv "$1/Contents/Resources/Spellcheck Dictionary" "/Library/Application Support/MyApp/."; 
exit 0 

回答

0

用戶特定的任務,一般不安裝腳本屬於 - 記住,有可能是多個用戶的機器上,並且您的安裝程序運行時,他們中的一些可能無法訪問。 (例如,用戶可能已經加密了主目錄,或者直到運行安裝程序後纔可能存在)。如果您的應用程序需要將文件複製到用戶的主目錄,則應該在首次啓動時執行此操作。

不過,我看到幾個具體問題與此腳本:

  1. 你的腳本是指$1在幾個地方。你確定你的腳本有一個參數在命令行上傳遞給它嗎?

  2. 正確的語法測試如果文件不存在是:

    if [ ! -f "/path/to/file" ] ; then … 
    

    你的腳本中缺少方括號,-f條件。 (有關詳細信息,請參閱man test

  3. 假設$1應該是路徑到當前用戶的主目錄,你有論據mv倒退。目的地是最後一個,而不是第一個。 (語法本質上是mv from to。)

+0

好的,感謝您的幫助。因此,而不是使用安裝程序,我應該有我的S/W檢查,以查看文件和文件夾是否存在,並在每次打開時將其移動到那裏?我認爲使用安裝程序腳本可以避免這種情況,但我想我不應該出於您指定的原因。儘管知道這個語法很有幫助,但是謝謝。 – user3499381

+0

應該可能是複製文件,而不是移動它。否則,是的。 – duskwuff