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

标签 bash function shell syntax

我正在尝试调用 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/

相关文章:

shell - 插入 Vim 函数参数和 shell 命令

java - 如何为java进程创建PID文件

bash:如何将多个命令应用于同一文件并连接输出

linux - 将文本 append 到管道文件

javascript - 一键运行 2 个函数 Javascript

Javascript:在函数完成时调用特定函数

c - C 中是否有可能有一个函数将这两个结构作为参数?

连接到 docker daemon 的 shell 脚本

linux - bash 计算顺序文件

php - 转义 Shell echo