识别curl命令何时成功完成

识别curl命令何时成功完成

我有一个脚本,它使用curl 命令向Web 服务发送请求,Web 服务的输出被写入文件。然后该文件被移动到另一个位置。

有没有办法在脚本中使用延迟(等待将输出写入文件的完成)来识别curl 命令是否已成功完成并且输出是否已写入文件?

我想避免在信息仍在写入时移动文件的情况。

感谢您的意见

答案1

为什么要使用延迟,以及为什么需要移动文件?

只需将文件写入正确的位置即可:

curl -o /path/to/correct/place/filename URL

如果 Curl 没有错误地终止,则会以零退出状态退出。仅当 Curl 成功时,您才可以使用此事实将文件移动到正确的位置:

curl -o file URL && mv file /some/place

或者,如果您需要进行一些错误报告:

if curl -o file URL; then
    mv file /some/place
    # or, to use sftp:
    #      printf 'put file\n' | sftp -b - user@host 
else
    printf 'Curl failed with error code "%d" (check the manual)\n' "$?" >&2
    exit 1
fi

答案2

使用&&forcurlmv命令。在这种情况下,仅当之前的命令执行成功mv时才会执行。curl

curl .... >to_file && mv to_file /to/dest

如果您需要跨 sftp 服务器移动文件,请使用以下命令。

sftp USER@HOST:/path/in/remote/dest <<< $'put /path/to/local/to_file'

甚至直接写入远程sftp路径,FILEcurl将输出

sftp USER@HOST:/path/in/remote/dest <<< $'put /path/to/local/"$(curl -o FILE URL)"'

相关内容