gpt4 book ai didi

swift - 如何在没有 [ ] 括号的情况下显示函数的输出?

转载 作者:行者123 更新时间:2023-11-28 15:30:07 29 4
gpt4 key购买 nike

我正在尝试编写一个简单的应用程序来执行系统命令以使用 MacOS“Ping”功能。我试图从本质上执行命令“ping -c 1 -S ethernetIP www.google.com”

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

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

["17.104.78.250"]

ping:绑定(bind):无法分配请求的地址[""]

我看到 EthernetIP() 函数正在生成方括号 [ ] 中的系统以太网接口(interface) 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 查询中的这个字符串不包含括号和引号?

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)

}

最佳答案

I see that the EthernetIP() function is producing the system ethernet interface IP address in brackets [ ]

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

output = string.components(separatedBy: "\n")

如果你不想写一个数组

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
}

关于swift - 如何在没有 [ ] 括号的情况下显示函数的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44810400/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com