Создать файл в Bash Terminal из Swift - PullRequest
       9

Создать файл в Bash Terminal из Swift

0 голосов
/ 07 сентября 2018

Я пытаюсь использовать Swift для запуска команды в терминале (macOS). В частности, чтобы создать пустой файл. Вот что я имею для запуска в оболочке:

    import Foundation
    func shell(_ args: String...) ->Int32{
        let task = Process()
        task.launchPath = "/bin/bash"
        task.arguments = args
        task.launch()
        task.waitUntilExit()
        return task.terminationStatus
    }

Обратите внимание, что я пробовал /usr/bin/env/ для пути запуска без хорошего результата.
Когда я звоню shell("touch /path/to/new/file.txt"), он возвращает ошибку вроде:

    /bin/bash: touch /Users/my_home_dir/Desktop/file.txt: No such file or directory
    127

Если я изменяю путь запуска, это дает очень многословное, но бесполезное консольное сообщение , которое напоминает мне типичный вывод Python <'class 'demo' at 0x577e040ab4f'> Я даже пытался запустить python в терминале и создать файл с open().
Я открыт для любых новых способов создания файлов в Swift (что было бы замечательно), и для любых способов сделать это, чтобы действительно работал.

Заранее спасибо 101

1 Ответ

0 голосов
/ 07 сентября 2018

Вызов этой команды (/bin/bash touch ~/Desktop/touch.txt) непосредственно в Терминале приводит к той же ошибке.

/ usr / bin / touch: невозможно выполнить двоичный файл

Если вы хотите вызвать только «touch», вы можете установить путь запуска на /usr/bin/touch и только передать ~/Desktop/touch.txt в качестве аргумента.

Если вы хотите вызывать общие команды bash / shell, вы передаете -c, а затем команду оболочки, объединенную в виде строки, которая соответствует: /bin/bash -c "touch ~/Desktop/touch.txt".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...