我想从 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"