В настоящее время я работаю над библиотекой gphoto2 в приложении Cocoa. Итак, в основном я пытался получить доступ к библиотеке через свое приложение. Gphoto2 работает с командами. Поэтому я использую класс Process для выполнения команд терминала через приложение. Итак, у меня есть файл сценария, который содержит сценарий для доступа к gphoto2.
Вот мой код:
func shellScript ()
{
guard let path1 = Bundle.main.path(forResource: "Script",ofType:"sh") else {
print("Unable to locate Script.sh")
return
}
let path = "/bin/zsh" //"file:///usr/local/Cellar/gphoto2/2.5.23/bin/gphoto2"
let arguments = [""]
let process = Process()
process.arguments = arguments
process.executableURL = URL(fileURLWithPath: path)
let connection = Pipe()
process.standardOutput = connection
do {
let task = try Process.run(URL(fileURLWithPath: path1), arguments: []) { (process) in
let data = connection.fileHandleForReading.readDataToEndOfFile()
if let string = String(data: data, encoding: String.Encoding.utf8) {
print(string)
}
}
task.waitUntilExit()
}catch {
print(error.localizedDescription)
}
}
А вот и мой файл сценария.
#!/bin/zsh
# Script.sh
# CommandsDemo
#
# Created by Ravindra on 22/05/20.
# Copyright © 2020 Ravindra. All rights reserved.
#name="Pinto"
echo "*********************************"
echo "Build Started"
echo "*********************************"
echo "*********************************"
echo "Beginning Build Process"
echo "*********************************"
#script typescript bash -c 'ls'
script commandOutputFile gphoto2
Вот результат этого.
*********************************
Build Started
*********************************
*********************************
Beginning Build Process
*********************************
Script started, output file is commandOutputFile
script: gphoto2: No such file or directory
Script done, output file is commandOutputFile
На самом деле, мои системные команды (echo, ls, et c.) Работают нормально. Но это похоже на несистемные (gphoto2, npm, et c.) Команды, тогда он не может найти файл или каталог. Я указываю проблему, с которой мне нужно передать DSLR (для библиотеки gphoto2, которую я использую) моему приложению macOS.