如何 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
。它将保留您想要的文件名值。
我在子 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
。它将保留您想要的文件名值。