swift - 在 bash 脚本中运行 swift 脚本
问题描述
我想从 bash 脚本中的字符串执行 swift 脚本并获得执行结果。
我尝试了几种变体,但无法达到所需的结果。
我不想使用单独的文件来存储 swift 脚本。我想在环境变量中包含 swift 脚本。
APP="
import Foundation
let path = CommandLine.arguments[1]
print(path)
"
#xcrun swift main.swift /path/path2/path3/path4 **this is not that I want**
#I need something like this:
xcrun swift $APP /path/path2/path3/path4
如果我运行这个脚本,我会遇到错误:
错误:无法调用子命令:/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-import(没有这样的文件或目录)如何从字符串执行快速脚本?
解决方案
您可以调用swift -
以从标准输入读取源代码,并通过“此处文档”
来提供内联 Swift 代码。
示例:的内容x.sh
:
echo "Before running Swift"
xcrun swift - /path/path2/path3/path4 <<'EOF'
import Foundation
let path = CommandLine.arguments[1]
print(path)
EOF
echo "After running Swift"
运行脚本:
$ bash x.sh 运行 Swift 之前 /路径/路径2/路径3/路径4 运行 Swift 后
或者,如果你想从变量中读取 Swift 代码:
APP="
import Foundation
let path = CommandLine.arguments[1]
print(path)
"
echo "Before running Swift"
xcrun swift - /path/path2/path3/path4 <<< "$APP"
echo "After running Swift"
推荐阅读
- git - 如何在终端中使用 git 或在 Vim 中使用 Fugitive 列出我的所有 Github 存储库,公共和私有?
- javascript - 我可以将图像作为文件对象检索到 Firebase 存储服务吗?
- netflix - 是什么阻止人们下载任何网站
- html - Atom - HTML 代码在复制和粘贴时变为灰色(使用代码更新)
- python - 打印语句正在执行,但在 assert_call 失败后直接调用函数
- python - Why is my program not working as expected?
- xml - MSXML2:如何使用 XPATH 更新(+插入和删除)节点
- android - Androidx EncryptedFile - 将未加密文件写入 EncryptedFile 的最佳方式
- html - 一页上有多个简单的 HTML 播放/暂停按钮的问题
- google-cloud-tasks - Google App Engine Cloud Tasks - 503 请求在等待太长时间以尝试处理您的请求后被中止