我在 shell 中有以下变量
{
"type": "service_account",
"project_id": "projectid234",
"private_key_id": "aasdadsxzce5",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCiWjA5+xF6gsGC\nOknIL9DOCQpV2LRXYPEKl5+mXuN45vwqh6QvG4lw/Hi7EJhtAn+FQy7+yOQYrw3l\nQ2CpxDotT+PT2OuQ6LVbc/F+SblPlrK3B+8aEMo57PZ+gnwMcQ7+ofPnzC635uUP\npOG0idMTK\n-----END PRIVATE KEY-----\n",
"client_email": "clinetmail@asdasd3435.iam.gserviceaccount.com",
"client_id": "1234242342341",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/assadjashd.iam.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)
就像下面这样:
export var1='{
"type": "service_account",
"project_id": "projectid234",
"private_key_id": "aasdadsxzce5",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCiWjA5+xF6gsGC\nOknIL9DOCQpV2LRXYPEKl5+mXuN45vwqh6QvG4lw/Hi7EJhtAn+FQy7+yOQYrw3l\nQ2CpxDotT+PT2OuQ6LVbc/F+SblPlrK3B+8aEMo57PZ+gnwMcQ7+ofPnzC635uUP\npOG0idMTK\n-----END PRIVATE KEY-----\n",
"client_email": "clinetmail@asdasd3435.iam.gserviceaccount.com",
"client_id": "1234242342341",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/assadjashd.iam.gserviceaccount.com"
}'
Run Code Online (Sandbox Code Playgroud)
现在我想将其转换为单行,我该怎么办?我尝试了各种解决方案,但它们不起作用。例如,我使用了下面的代码,但在转换为 Base64 并解码后,它只返回第一行。你介意帮我吗?
$((echo $var1 | tr -d '\n') | base64)
Run Code Online (Sandbox Code Playgroud)
由于您正在处理 JSON,我推荐像jq这样的工具,它为我们提供了选项--compact-output,并且能够使用以下方式编码为 Base64@base64
至单行输出
jq --compact-output '' <<< "$test"
Run Code Online (Sandbox Code Playgroud)
转Base64单行输出
jq --compact-output '@base64' <<< "$test"
Run Code Online (Sandbox Code Playgroud)
转为Base64单行输出,并用bash解码
jq --compact-output --raw-output '@base64' <<< "$test" | base64 --decode
Run Code Online (Sandbox Code Playgroud)
请注意--raw-output删除""。
上述行的本地 shell 示例:
jq --compact-output '' <<< "$test"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |