2013-12-17 1 views
2

Я пытаюсь создать базовое приложение, которое будет использоваться на нескольких машинах с переменными именами домашних папок, которые создадут каталог и скопируют содержимое папки в местоположении A в этот новый каталог. Каталог важна, так как он должен находиться в папке «Библиотека пользователя».AppleScript работает Shell Script: проблемы с разрешениями с mkdir и cp

#!/bin/sh 

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

При создании кишок его с помощью скрипта оболочки я могу просто запустить сценарий в терминале. Однако, когда я использую 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 не отменяет мои права на копирование файлов из одного места в другое?

ответ

1

использование -p опция с cp.

cp -p "$moveFile" "$newFolder"  

Script

#!/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 
Смежные вопросы