我正在尝试构建一个基本应用程序,该应用程序将在具有可变主文件夹名称的多台计算机上使用,这些名称将创建目录并将位置A中文件夹的内容复制到此新目录。该目录很重要,因为它需要存在于User文件夹的Library中。
#!/bin/sh
moveFile="$HOME/Desktop/Updater/Test Folder 1/test.txt"
newFolder="$HOME/Desktop/Updater/Test Folder 2"
mkdir "$newFolder"
cp "$moveFile" "$newFolder"
在使用shell脚本构建它的内核时,我能够在终端中运行脚本。但是,当我使用AppleScript调用脚本时,它会说权限被拒绝:
do shell script "bash $HOME/Desktop/Updater/updater.sh" with administrator privileges
cp: $HOME/Desktop/Updater/Test Folder 2/test.txt: Permission denied
显然,为了解决这个问题,我将添加管理员权限:
do shell script "bash $HOME/Desktop/Updater/updater.sh" with administrator privileges
这个问题是,它会将文件夹和文件的权限修改为系统的权限。这打破了另一个使用这些移动文件的应用程序的另一部分,因为用户权限已被删除并替换为系统权限。
我的问题是:如何确保AppleScript执行shell脚本不会破坏我将文件从一个位置复制到另一个位置的权限?
答案 0 :(得分:1)
将-p
选项与cp
一起使用。
cp -p "$moveFile" "$newFolder"
脚本
#!/bin/sh
moveFile="$HOME/121/anchor”
newFolder="$HOME/121/Updater/“
mkdir "$newFolder"
sudo chmod u+rwX,go+rX "$newFolder"
sudo chown “$1”
cp -p "$moveFile" "$newFolder"
Applescript
set myUsername to (short user name of (system info))
do shell script "bash $HOME/p.sh " & myUsername with administrator privileges