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

时间:2013-12-17 04:49:09

标签: macos bash shell applescript

我正在尝试构建一个基本应用程序,该应用程序将在具有可变主文件夹名称的多台计算机上使用,这些名称将创建目录并将位置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脚本不会破坏我将文件从一个位置复制到另一个位置的权限?

1 个答案:

答案 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