Как я могу выполнить скрипт оболочки в Swift? - PullRequest
0 голосов
/ 04 октября 2019

Я создаю приложение MacOS со Swift, которое должно загрузить и запустить скрипт оболочки. Мне удалось загрузить скрипт с curl, но я не могу его запустить. Я использую функцию из этот ответ для запуска других команд. Когда я использую App Sandbox в Xcode, я получаю ошибку /bin/bash: ./file.sh: Permission denied. Когда я пытаюсь изменить права доступа к файлу, я получаю сообщение об ошибке chmod: Unable to change file mode on file.sh: Operation not permitted.

Вот мой код:

func shell(_ command: String) -> String {
    let task = Process()
    task.launchPath = "/bin/bash"
    task.arguments = ["-c", command]

    let pipe = Pipe()
    task.standardOutput = pipe
    task.launch()

    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output: String = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String

    return output
}

shell("curl https://www.example.com/file.sh -o file.sh")
shell("./file.sh")

Вывод:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  1 16.0M    1  224k    0     0   231k      0  0:01:11 --:--:--  0:01:11  231k
 47 16.0M   47 7808k    0     0  4064k      0  0:00:04  0:00:01  0:00:03 4062k
100 16.0M  100 16.0M    0     0  6037k      0  0:00:02  0:00:02 --:--:-- 6037k


/bin/bash: ./file.sh: Permission denied
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...