У меня проблемы с выполнением команд из Applescript и теперь с Swift . Необходимо запустить команды с "/ bin / bash" и аргументами -c или -lc. Проблема в том, что команды из Испании могут содержать акценты. Различные акценты, такие как á, é, í ..etc, обрезают команду и заканчивают ошибками.
Пример команды, такой как:
mkvmerge -i Poesía bonita.mkv
, будет запущен как:
mkvmerge -i Poesi
Пробовал с простыми кавычками и двойными кавычками, но не работал.
mkvmerge -i "Poesía bonita.mkv"
mkvmerge -i 'Poesía bonita.mkv'
Есть ли правильный способ запуска команды из Swift?
Я использую:
let command = "mkvmerge - i '/Users/Poesía bonita.mkv'"
let task = Process()
task.launchPath = "/bin/bash"
task.arguments = ["-lc", command]
let pipe = Pipe()
task.standardOutput = pipe
task.launch()
Только что попробовал решение @RobC без специальных символов с помощью этой функции:
func repairString(theString: String) -> String{
let accentedChars = ["á","Á","ä","Ä","é","É","í","Í","ó","Ó","ö","Ö","ú","Ú","ü","Ü","ñ","Ñ"]
var theNewString = ""
for char in accentedChars{
if theString.contains(String(char)) {
theNewString = theString.replacingOccurrences(of: String(char), with: "\\" + String(char))
}
}
return theNewString
}
Но не работает
Error: The file '/Users/Poes\i' could not be opened for reading: open file error.
У кого-то есть другая идея?
С уважением и благодарностью