यदि आप कॉलिंग कमांड के लिए बैश वातावरण का उपयोग करना चाहते हैं, तो निम्नलिखित बैश फ़ंक्शन का उपयोग करें, जो लेगोलेस के निश्चित संस्करण का उपयोग करता है। मुझे शेल फ़ंक्शन के परिणाम से एक अनुगामी न्यूलाइन निकालना था।
स्विफ्ट 3.0: (Xcode8)
import Foundation
func shell(launchPath: String, arguments: [String]) -> String
{
let task = Process()
task.launchPath = launchPath
task.arguments = arguments
let pipe = Pipe()
task.standardOutput = pipe
task.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: String.Encoding.utf8)!
if output.characters.count > 0 {
let lastIndex = output.index(before: output.endIndex)
return output[output.startIndex ..< lastIndex]
}
return output
}
func bash(command: String, arguments: [String]) -> String {
let whichPathForCommand = shell(launchPath: "/bin/bash", arguments: [ "-l", "-c", "which \(command)" ])
return shell(launchPath: whichPathForCommand, arguments: arguments)
}
उदाहरण के लिए वर्तमान वर्किंग डाइरेक्टरी के वर्तमान वर्किंग गेट शाखा को पाने के लिए:
let currentBranch = bash("git", arguments: ["describe", "--contains", "--all", "HEAD"])
print("current branch:\(currentBranch)")