首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示没有[]括号的函数的输出?

如何显示没有[]括号的函数的输出?
EN

Stack Overflow用户
提问于 2017-06-28 18:51:20
回答 1查看 279关注 0票数 0

我试图编写一个简单的应用程序来执行使用MacOS "Ping“函数的系统命令。实际上,我试图执行"ping -c 1 -S ethernetIP www.google.com“命令

我希望系统通过以太网适配器一次ping google.com并提供ping结果。

当我将EthernetIP()和outPing()函数绑定到一个按钮并单击它时,将得到以下输出:

"17.104.78.250"

ping:绑定:无法分配请求的地址""

我看到EthernetIP()函数在括号中生成系统以太网接口IP地址。这似乎会导致ping函数发生故障,因为输入到pingOut()函数中的内容似乎是:

"ping -c 1 -S "17.104.78.250“www.google.com"

我希望它将shell ping命令提供给这一行:

"ping -c 1 -S 17.104.78.250 www.google.com"

在outPing()中引用此字符串时,如何使来自以太网IP查询的字符串不包括括号和引号?

代码语言:javascript
复制
import Foundation

func runCmd(cmd : String, args : String...) -> ([String]) {

var output : [String] = []

let task = Process()
task.launchPath = cmd
task.arguments = args

let outpipe = Pipe()
task.standardOutput = outpipe

task.launch()

let outdata = outpipe.fileHandleForReading.readDataToEndOfFile()
if var string = String(data: outdata, encoding: .utf8) {
    string = string.trimmingCharacters(in: .newlines)
    output = string.components(separatedBy: "\n")
}

task.waitUntilExit()

return (output)

}

func EthernetIP()  {
let eIP = runCmd(cmd: "/bin/bash", args: "-c", "ipconfig getifaddr en0")
print(eIP)

}

func outPing() {

let pingip = runCmd(cmd: "/sbin/ping", args: "-c 1", "-S", "\(eIP)", "www.google.com" )
print(pingip)

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 19:04:10

我看到EthernetIP()函数在括号中生成系统以太网接口IP地址。

您可以这样做,因为您将返回值声明为数组([String]),并将输出拆分为行中的段落。

代码语言:javascript
复制
output = string.components(separatedBy: "\n")

如果你不想要数组写

代码语言:javascript
复制
func runCmd(cmd : String, args : String...) -> String {

    let task = Process()
    task.launchPath = cmd
    task.arguments = args

    let outpipe = Pipe()
    task.standardOutput = outpipe

    task.launch()

    let outdata = outpipe.fileHandleForReading.readDataToEndOfFile()
    guard let string = String(data: outdata, encoding: .utf8) else { return ""}
    let output = string.trimmingCharacters(in: .newlines)
    task.waitUntilExit()

    return output
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44810400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档