返回语句中的Bash非法数字错误

时间:2017-03-05 20:37:23

标签: bash function shell syntax

我正在尝试调用bash函数并将函数返回的变量分配给变量。但是,当我运行下面的代码时,我收到以下错误,我不明白我可能做错了什么:

test.sh: return: line 7: Illegal number: aGVsbG93b3JsZA== helloworld

convertfrombase64 () {
  B64DATA=$1
  echo "$B64DATA" | base64 -d
  return "$B64DATA"
}

PLAINTEXT=$(convertfrombase64 "aGVsbG93b3JsZA==")
echo "$PLAINTEXT"

1 个答案:

答案 0 :(得分:4)

您无法从函数返回字符串。 Bash函数的返回值遵循与退出代码相同的规则 - 请参阅相关帖子。

您已经正确使用了该功能的输出。可能是您要返回base64的退出代码以指示状态,这样:

convertfrombase64 () {
  B64DATA=$1
  echo "$B64DATA" | base64 -d
  return $?
}

根据评论中提出的重要建议,上述函数可以更好地编写为:

convertfrombase64() {
  printf '%s' "$1" | base64 -d
}

有关详细信息,请参阅此帖: