Get path to Swift script from within script
I'm writing a script in Swift, and I want it to modify some files that always exist in the same directory as the script itself. Is there a way to get the path to the script from within itself? I tried:
print(Process.arguments)
But that outputs only the path that was actually given to the script, which may be the fully resolved path, just the file name, or anything in between.
I'm intending the script to be run with 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)
}
}
The accepted answer doesn't work in Swift 3. Also, this is a more straightforward approach:
import Foundation
let currentDirectoryURL = URL(fileURLWithPath: FileManager.default.currentDirectoryPath)
let url = URL(fileURLWithPath: CommandLine.arguments[1], relativeTo: currentDirectoryURL)
print("script at: " + url.path)
However, it has the same problem pointed out by @rob-napier, if the script's directory is in your PATH.
链接地址: http://www.djcxy.com/p/56808.html上一篇: npm包中的二进制文件
下一篇: 从脚本中获取Swift脚本的路径