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

2024-02-12

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

print(Process.arguments)

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

我打算运行该脚本swift /path/to/my/script.swift.


接受的答案在 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 指出的相同问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从脚本内获取 Swift 脚本的路径 的相关文章

随机推荐

  • AngularJS 承诺链

    我的应用程序应该打开一个弹出窗口 要求用户确认 然后进行 ajax cal 并关闭弹出窗口 我尝试使用一链来做到这一点promise 我已经使用过它 我记得它应该以这种方式工作 但它似乎在调用后阻塞reservationService co
  • 使用 RavenDb 查询字典

    我有一个类定义为 public class Student public string Id get set public IDictionary
  • 模拟 javax.mail.Transport

    无需创建另一个我可以注入的类 是否可以嘲笑javax mail Transport所以我可以做一些模拟测试Transport send Java EE 7 上的方法 由于 Dumbster 没有当前可用的 Maven Central 工件
  • ASP.NET MVC3 ajax 部分视图刷新

    我在 asp net mvc3 中面临 ajax 更新 div 的问题 我有一个包含内容的视图 div Html RenderPartial RefreshComments Model div div using Ajax BeginFor
  • 如何编译将以管理员身份启动 exe 的程序[重复]

    这个问题在这里已经有答案了 可能的重复 以编程方式提升进程权限 https stackoverflow com questions 133379 elevating process privilege programatically 我想在
  • Spring 3.1 - 未找到 javascript 文件 - 404 错误

    我在文件夹 WebContent resources js test js 中有一个 js 文件 我试图在 jsp 中包含相同的文件 但是jsp文件无法找到js文件 浏览器控制台出现404错误 我已经提出了几个问题 SpringMVC 可以
  • 在哪里可以管理上传到 Gitlab.com 项目 wiki 的文件?

    在为我的私人项目创建 wiki 时 我已将一些文件上传到 gitlab com 上的 Gitlab 存储库 现在我的问题是 我可以查看已上传文件的列表吗 有什么办法可以删除其中一些吗 为什么上传文件的权限是公开的 可以改成私密吗 gitla
  • 如何从 iPhone 上的在线网址播放音频 [重复]

    这个问题在这里已经有答案了 我知道以前有很多人问过这个问题 但我只是不知道为什么这在我的 x code 和 Objective C 应用程序中不起作用 基本上 我想从 url 在应用程序中播放音频 仅使用Apple网站上的测试音频 我的代码
  • 空文件上的 AWK FNR==NR

    我正在运行以下命令 只要它们的内容在第一个文件中 该命令就可以很好地工作 awk F FNR NR a tolower 1 next a tolower 1 OutSideSyncUsers csv NewUsers csv 如果第一个文件
  • 将 ID 添加到 Google 地图标记,然后定位它[重复]

    这个问题在这里已经有答案了 我已经使用 Google Maps API v3 创建了一个 google 地图 并添加了一个自定义标记 我已经向标记构造函数添加了一个 ID 我希望使用 jQuery 以其他 JS 为目标 但目前 当我只是尝试
  • 静态链接到动态库。 glibc

    所以 我遇到一个问题 一台机器上有两个版本的 GCC 3 4 6和4 1 这是由于新软件的一些依赖性问题 需要 glibc 4 1 当我将这个新软件与 4 1 库链接时 它链接得很好 但是 当执行软件时 它找不到该库 因为它正在我的 LD
  • ExtJs 面板 - 添加动态组件

    我有一扇窗户 窗户内有面板 我动态地将组件添加到面板中 这些组件采用 hbox 布局 以便水平排列 单击按钮后 我将在 hbox 布局中向面板中添加一行类似的组件 这里的问题是我想在第一行下方添加第二行 但以下代码将组件添加到面板的顶部 p
  • Symfony2 Doctrine 查询生成器作为 FROM 子句中的子查询

    我使用查询生成器得到了一个查询 并将其分配给 qb多变的 它在 PHP 和数据库中都可以正常工作 现在 我尝试将该查询用作子查询 如下所示 subQuery qb gt getQuery gt getSql query select res
  • 如何调试 Linux 内核模块的 init_module() 调用?

    我正在迈出 Linux 内核开发的第一步 我有一些代码生成 ko我安装的内核模块insmod 我想要一种方法来调试安装模块时发生的情况 但我遇到了一些困难 我需要调试调用init module 当我运行时这个函数被调用吗insmode 我尝
  • UPI Deep Link 付款被拒绝

    我不知道在哪里问这个问题是否合适 而是我不知道在哪里问这个问题 我正在flutter中开发一个应用程序 对于应用程序内购买我正在尝试实现UPI支付 我也有一些插件可以做到这一点 但是当我测试时 我的交易被拒绝 我正在尝试通过应用程序中的 P
  • 具有多个模板参数的 C++ 概念

    Bjarne Stroustrup 最近发表了report http www stroustrup com good concepts pdf在 C 概念 中 他提到了一些让我感到惊讶的事情 该示例 第 7 1 节中 使用 速记模板表示法
  • MySQL 基于游标的多列分页

    我有一些表想要使用基于游标的分页进行查询 但它需要应用于多个列 让我们举一个使用 2 列的简化示例 我像这样获取第一页 SELECT column 1 column 2 FROM table name ORDER BY column 1 c
  • 一种唯一标识 BTLE 设备的方法

    有没有办法唯一地标识 BTLE 设备 类似于硬件 ID 我有 2 个硬件 BTLE 设备和 2 个软 BTLE 设备 使用 CBCentralManager 所有这些设备都发送相同的 UUID 当所有设备都位于我附近时 我想识别确切的 BT
  • 如何使用 jq 将当前日期和时间附加到现有 json 文件中

    我有以下格式的 json 文件 username achu password test1234 我只想将时间戳添加到上述有效负载中并将其作为某些服务的请求发送 据我所知 下面的命令将帮助我们获取 Linux 上的当前标记 date r 但不
  • 从脚本内获取 Swift 脚本的路径

    我正在用 Swift 编写一个脚本 我希望它修改一些始终与脚本本身位于同一目录中的文件 有没有办法从脚本内部获取脚本的路径 我试过 print Process arguments 但这仅输出实际提供给脚本的路径 该路径可能是完全解析的路径