我正在尝试调用 bash 函数并将函数返回的输出分配给变量。但是,当我运行下面的代码时,出现以下错误,并且我不明白我可能做错了什么:
test.sh:返回:第7行:非法号码:aGVsbG93b3JsZA==
Hello World
convertfrombase64 () {
B64DATA=$1
echo "$B64DATA" | base64 -d
return "$B64DATA"
}
PLAINTEXT=$(convertfrombase64 "aGVsbG93b3JsZA==")
echo "$PLAINTEXT"
最佳答案
您无法从函数返回字符串。 Bash 函数的返回值遵循与退出代码相同的规则 - 请参阅相关帖子。
您已经正确使用了该函数的输出。可能您想返回 base64
的退出代码来指示状态,这样:
convertfrombase64 () {
B64DATA=$1
echo "$B64DATA" | base64 -d
return $?
}
根据评论中得到的很好的建议,上面的函数可以更好地写成:
convertfrombase64() {
printf '%s' "$1" | base64 -d
}
请参阅此帖子了解更多详细信息:
关于Bash 返回语句中出现非法数字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613658/