这是新的。我需要使用postinstall脚本将文件和文件夹移动到Mac上用户的Application Support文件夹。对于文件,我只想在文件尚不存在时移动它。如果确实存在,我不想覆盖它。这是我的剧本。它运行但没有任何东西被复制。我正在使用Packages应用程序,顺便说一下,这个脚本被加载到postinstall脚本选项卡中。
#!/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)
特定于用户的任务通常不属于安装程序脚本 - 请记住,计算机上可能有多个用户,并且在安装程序运行时可能无法访问其中一些用户。 (例如,用户可能具有加密的主目录,或者在安装程序运行之后可能不存在。)如果您的应用程序需要将文件复制到用户的主目录,则它应该在首次启动时执行此操作
尽管如此,我还是看到了这个脚本的几个具体问题:
您的脚本在多个地方引用if [ ! -f "/path/to/file" ] ; then …
。您确定您的脚本在命令行上传递了一个参数吗?
测试文件是否不存在的正确语法是:
-f
您的脚本缺少方括号和man test
条件。 (有关详细信息,请参阅$1
。)
假设mv
应该是当前用户主目录的路径,那么向后会有mv from to
的参数。目的地是最后的,而不是第一个。 (语法基本上是{{1}}。)