我正在尝试调用bash函数并将函数返回的变量分配给变量。但是,当我运行下面的代码时,我收到以下错误,我不明白我可能做错了什么:
test.sh: return: line 7: Illegal number: aGVsbG93b3JsZA==
helloworld
convertfrombase64 () {
B64DATA=$1
echo "$B64DATA" | base64 -d
return "$B64DATA"
}
PLAINTEXT=$(convertfrombase64 "aGVsbG93b3JsZA==")
echo "$PLAINTEXT"
答案 0 :(得分:4)
您无法从函数返回字符串。 Bash函数的返回值遵循与退出代码相同的规则 - 请参阅相关帖子。
您已经正确使用了该功能的输出。可能是您要返回base64
的退出代码以指示状态,这样:
convertfrombase64 () {
B64DATA=$1
echo "$B64DATA" | base64 -d
return $?
}
根据评论中提出的重要建议,上述函数可以更好地编写为:
convertfrombase64() {
printf '%s' "$1" | base64 -d
}
有关详细信息,请参阅此帖: