运行Shell脚本的AppleScript:mkdir和cp的权限问题



我正在尝试构建一个基本的应用程序,该应用程序将在多台具有可变主文件夹名称的机器上使用,它将创建一个目录,并将位置a中文件夹的内容复制到此新目录。目录很重要,因为它需要位于用户文件夹的库中。

#!/bin/sh
moveFile="$HOME/Desktop/Updater/Test Folder 1/test.txt"
newFolder="$HOME/Desktop/Updater/Test Folder 2"
mkdir "$newFolder"
cp "$moveFile" "$newFolder"

在用shell脚本构建它的核心时,我能够在Terminal中运行该脚本。然而,当我使用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脚本的执行不会破坏我将文件从一个位置复制到另一个位置的权限?

-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

最新更新