我需要將變數的內容按原樣轉換為 base64。我決定做一個函式,將變數的內容傳入其中,稍后再輸出。到目前為止,我有以下內容
#!/bin/dash
payload1='{
"currency": "ABC",
"transaction": "1-8ef2b11f1b"
}
'
payload2='{x}'
function base64_encode() {
# must first receive the data
# ...
printf '%s' "${input}" | base64 | tr -d '=' | tr '/ ' '_-' | tr -d '\n'
}
# something like:
printf '%s' "$(printf '%s' "${payload1}" | base64_encode)"
printf '%s' "$(printf '%s' "${payload2}" | base64_encode)"
最重要的是,我應該從變數中準確地得到ewogICJjdXJyZW5jeSI6ICJBQkMiLAogICJ0cmFuc2FjdGlvbiI6ICIxLThlZjJiMTFmMWIiCn0K,而不是。問題是我不知道如何將變數的內容放入函式中。ewogICJjdXJyZW5jeSI6ICJBQkMiLAogICJ0cmFuc2FjdGlvbiI6ICIxLThlZjJiMTFmMWIiCn0payload1base64_encode
有沒有通用的方法來做到這一點?或者也許我的方法通常是錯誤的?
uj5u.com熱心網友回復:
由于您將資料傳送到函式中,因此讓 base64 直接從 stdin 讀取:
base64_encode() {
base64 # removed questionable `tr` commands
}
uj5u.com熱心網友回復:
@glennjackman 指出你的函式base64_encode不需要任何引數,這是真的,它也與命令的用法保持一致base64。
在這里,我向您展示如何將函式的引數(我base64url_encode為了準確目的而呼叫)傳遞給命令base64:
#!/bin/sh
payload1='{
"currency": "ABC",
"transaction": "1-8ef2b11f1b"
}
'
payload2='{x}'
base64url_encode() {
printf '%s' "$@" | base64 | tr -d '=\n' | tr '/ ' '_-'
}
payload1_b64u=$(base64url_encode "${payload1}")
payload2_b64u=$(base64url_encode "${payload2}")
printf '%s\n' "$payload1_b64u"
printf '%s\n' "$payload2_b64u"
ewogICJjdXJyZW5jeSI6ICJBQkMiLAogICJ0cmFuc2FjdGlvbiI6ICIxLThlZjJiMTFmMWIiCn0K
e3h9
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/373055.html
