shell - 如何在 groovy 函数中将“Json 字符串”从 groovy 变量传递到 shell 变量
问题描述
我正在尝试为詹金斯创建共享库来构建应用程序。当我尝试将 json 字符串从 groovy 函数传递到 shell 块以执行构建命令时。而 json 字符串不带引号传递。如何保留报价。
stage('build app') {
steps {
script {
build project:"TestApp.xcodeproj",
workspace: "TestApp.xcworkspace",
scheme: "Develop",
config: "Debug",
target: "{ "TestApp": { "info_plist": "TestApp/Info.plist", "profile_name": "Test App Debug (January 2021)", "app_id": "com.******.Debug" } }"
}
}
}
def build(Map buildParams) {
sh """#!/bin/bash -l
export XCODE_PROJ="${buildParams.project}"
export XCODE_WORKSPACE="${buildParams.workspace}"
export XCODE_BUILD_SCHEME="${buildParams.scheme}"
export XCODE_BUILD_CONFIGURATION="${buildParams.config}"
export XCODE_TARGET_JSON="${buildParams.target}"
#build App
fastlane build app
"""
}
期待 json 字符串,因为它在带有“引号”的 shell 块中。而得到错误期望'}'发现:. 当我转义json字符串的引号时,获取没有“引号”的值
{ TestApp: { info_plist: TestApp/Info.plist, profile_name: Test App Debug (January 2021), app_id: com.******.Debug } }
这导致 fastlane 抛出错误无效令牌。如何保留shell块变量中的引号
解决方案
用反斜杠()转义json字符串中的引号对我有用。
'{ "TestApp": { "info_plist": "TestApp/Info.plist", "profile_name": "Test App Debug (January 2021)", "app_id": "com.******.Debug" } }'
推荐阅读
- vim - 如何将标记带到屏幕中间?
- machine-learning - 使用机器学习的当前状态来解决以下提到的问题的最佳方法是什么?
- javascript - replaceWith() 不返回标签
- python - python & c-c++单元程序原因段
- javascript - 如何在具有相同 ID 的元素上分配 API 获取随机颜色?
- python - Python:如何跟踪列表的排序方式?
- java - Workmanager(registerPeriodicTask)颤动,但我的应用程序每次在后台运行时都会崩溃
- javascript - Ajax 请求从数据库中获取数据并返回
- javascript - 错误凭证和注册令牌都属于同一个 Firebase 项目
- mysql - mysql 选择加入 4 个表