最近在编写一个分发脚本时,遇到一个小问题,文件较大,上传速度略慢,curl 默认下不展示上传进度,特此记录一下解决方案。

1
2
3
4
5
6
7
curl "$api" \
--progress-bar \
--verbose \
-F "file=@$full" \
-F "uKey=$uKey" \
-F "_api_key=$apiKey" |
tee -a "${LOG_FILE}" ; test ${PIPESTATUS[0]} -eq 0

说明:

有用的部分是:curl "$api" --progress-bar,它告诉curl在上传期间显示进度条(而不是默认的“进度表”)。

并且:| tee -a "{LOG_FILE}" ; test {PIPESTATUS[0]} -eq 0 它将命令的输出附加到日志文件,并将其回显到stdout

test ${PIPESTATUS[0]} -eq 0部分使得该行(在bash脚本中)的退出状态与curl命令返回的退出代码相同,而不是tee命令的退出状态。