在 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"

最新更新