首页 > 解决方案 > 在 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(没有这样的文件或目录)如何从字符串执行快速脚本?

标签: swiftbashshellcommand-line

解决方案


您可以调用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"

推荐阅读