如何 return 文件路径而不是 bash 函数中的文件内容?

How to return file path instead of file contents in a bash function?

我在子 shell 中有一个 bash 函数,它从 s3 存储桶下载文件并将其存储在 json 文件中:

download_file(){(
  fileName="$(mktemp)__trigger.json"
  aws_response="$(aws s3api get-object --version-id $VERSION_ID --bucket $BUCKET_NAME --key=$OBJECT_NAME $fileName | jq -cj)"
  if [[ -s "$fileName" ]]; then
      log_error "Unable to download file!"
      return 1
  fi
  log_info "[success] downloaded file"
  echo -n "$fileName"
);}

但是,当我从我的主脚本调用这个函数然后回显 return 值时,它 return 是文件的内容而不是文件的路径:

downloadedFileName="$(download_file)"

echo "$downloadedFileName"

我仍然是 bash 的新手,正在寻找一种方法将此代码更改为 return 我下载的临时文件的路径,而不是我下载时的文件内容呼应出来。任何帮助将不胜感激!

请参阅How to return a string value from a Bash function以获取有关如何处理的其他建议。处理这个问题的最简单方法就是在脚本的其他地方使用 fileName 。它将保留您想要的文件名值。