在命令行上读取可选的管道输入

时间:2018-09-11 04:38:15

标签: swift command-line

我正在使用Swift编写的命令行应用程序,在读取输入时遇到一些问题。我想收集文件列表作为应用程序的参数和@SpringBootApplication(exclude = { org.activiti.spring.boot.SecurityAutoConfiguration.class}) 之类的实用程序的管道数据。例如:

find

参数很简单,但是从管道数据读取时遇到了问题。如果我这样做:

wrench -f aFile.txt
find . -name *.txt | wrench

它适用于管道数据,但未管道传输时挂起。

如果我是

let standardInput = FileHandle.standardInput
let data = standardInput.readDataToEndOfFile()
print("Files: \(String(data: data, encoding: .utf8)!)")

不进行配管时,它再次挂起。另一种选择:

while let line = readLine() {
    print("\(line)")
}

似乎可以工作,但是当文件很多时,程序将在读取所有输入之前结束。

因此,我还需要找到一种使程序始终运行下去的方法。文件已被读取和处理。

我已经进行了很多搜索,但是到目前为止,找不到能够做到这一点的任何人(这似乎很奇怪,我本以为会做很多事情)。

有人知道如何解决这些问题吗?

0 个答案:

没有答案