美文网首页
在swift脚本里执行sh语句

在swift脚本里执行sh语句

作者: KeepYounger | 来源:发表于2019-10-24 16:21 被阅读0次
//#!/usr/bin/env swift

import Foundation

struct ProcessRunResult{
    let isSuccess: Bool
    let stdError: String
    let stdOutput: String
}

func cmd(_ launchPath: String, arguments: [String], currentDir: URL? = nil) -> ProcessRunResult{
    let process = Process()
    process.launchPath = launchPath
    process.arguments = arguments
    if let url = currentDir {
        process.currentDirectoryPath = url.path
    }
    
    let errPipe = Pipe()
    let outputPipe = Pipe()
    process.standardError = errPipe
    process.standardOutput = outputPipe
    
    process.launch()
    process.waitUntilExit()
    
    let error = String(data: errPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? ""
    let output = String(data: outputPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? ""
    return ProcessRunResult(isSuccess: process.terminationStatus == 0,
                            stdError: error.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines),
                            stdOutput: output.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines))
}

func which(_ command: String) -> String {
    let result = cmd("/usr/bin/which", arguments: [command])
    return result.stdOutput.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}

func shell(_ command: String, currentDir: URL? = nil) -> String {
    var args = command.components(separatedBy: CharacterSet.whitespacesAndNewlines)
    let cmdName = which(args.first!)
    args.removeFirst()
    let result = cmd(cmdName, arguments: args, currentDir: currentDir)
    print(result.isSuccess ? result.stdOutput : result.stdError)
    return result.stdOutput
}

相关文章

  • 在swift脚本里执行sh语句

  • Swift:基础(九)条件语句

    Swift 条件语句 条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false...

  • print/println..数据类型

    swift后面没有符号:; 写完一个语句另起一行 程序总是:由上而下执行,执行完上面语句才会执行下面语句 输出 字...

  • Swift - 控制流

    控制流语句,用于控制程序正在执行的流程。Swift中,控制流语句主要为条件语句和循环语句。 条件语句 if条件语句...

  • iOS SQLite.swift使用说明

    SQLite.swift使用说明 1、建表 等价于执行SQL语句 2、插入数据 等价于执行SQL语句 4、删除 等...

  • swift3.0 defer语句记录

    在swift中defer代码块中的代码 时必须执行的代码 不过也是该方法最后执行的语句 执行的结果是 12执行。...

  • 7.4 控制转移语句

    7.4 控制转移语句 控制转椅语句可以改变程序执行的顺序。Swift 提供了四种控制转移语句: continue ...

  • 小工具-mysql binlog分析

    目的:分析哪些语句在批量执行,主要分析mysql性能和同步延迟问题使用 get_binlog_sql_info.sh

  • Shell 语句语法详解

    Shell 语句语法详解 shell里的if语句 if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Sh...

  • 条件语句

    Swift 提供了以下几种类型的条件语句:语句 描述 if 语句if 语句 由一个布尔表达式和一个或多个执行语句...

网友评论

      本文标题:在swift脚本里执行sh语句

      本文链接:https://www.haomeiwen.com/subject/faldvctx.html