从脚本中获取Swift脚本的路径

我正在Swift中编写一个脚本,并且我希望它能修改与脚本本身始终存在于同一目录中的一些文件。 有没有从自身内部获取脚本路径的方法? 我试过了:

print(Process.arguments)

但是,它仅输出实际提供给脚本的路径,这可能是完全解决的路径,只是文件名或其间的任何内容。

我打算使用swift /path/to/my/script.swift运行脚本。


只是在迅速:

let cwd = FileManager.default.currentDirectoryPath
print("script run from:n" + cwd)

let script = CommandLine.arguments[0];
print("nnfilepath given to script:n" + script)

//get script working dir
if script.hasPrefix("/") { //absolute
    let path = (script as NSString).deletingLastPathComponent
    print("nnscript at:n" + path)
} else {
    let urlCwd = URL(fileURLWithPath: cwd)
    if let path = URL(string: script, relativeTo: urlCwd)?.path {
        let path = (path as NSString).deletingLastPathComponent
        print("nnscript at:n" + path)
    }
}

接受的答案在Swift 3中不起作用。另外,这是一个更直接的方法:

import Foundation

let currentDirectoryURL = URL(fileURLWithPath: FileManager.default.currentDirectoryPath)
let url = URL(fileURLWithPath: CommandLine.arguments[1], relativeTo: currentDirectoryURL)
print("script at: " + url.path)

但是,如果脚本的目录位于PATH中,它与@ rob-napier指出的问题相同。

链接地址: http://www.djcxy.com/p/56807.html

上一篇: Get path to Swift script from within script

下一篇: Why changing LD