【问题标题】:Swift - Reading piped input [duplicate]Swift - 读取管道输入
【发布时间】:2015-10-20 14:44:39
【问题描述】:

我创建了一个“Shebang”快速脚本。

我正在使用 Process.arguments 解析输入参数

如果“管道”信息通过管道传输到脚本中,我如何读取它?

#!/usr/bin/env xcrun swift
import Foundation
for argument in Process.arguments {
// parse the input arguments
}

// if the input is piped into the script?:
// if PIPE??? { 
print("Handling pipe")
let pipe = NSPipe()
let handle = pipe.fileHandleForReading
let data = handle.readDataToEndOfFile()
print("End of pip")
}

【问题讨论】:

  • 使用标准输入? *.com/q/24046952/2088135
  • 谢谢,我试过了,但它卡住了。
  • print("处理管道") let pipe = NSPipe() let handle = pipe.fileHandleForReading let data = handle.availableData print("End of pip") print(data)
  • 请注意您尝试中的fileHandleForReading 和链接答案中建议的fileHandleWithStandardInput 之间的区别。

标签: linux swift bash xcrun


【解决方案1】:

NSPipe 更改为 NSFileHandle.fileHandleWithStandardInput() let data = pipe.availableData 似乎可以解决问题。 谢谢 @Tom Fenech

【讨论】: