在bash中获取cURL响应
问题描述:
我有一个简单的bash脚本,可以将文件上传到FTP。我想知道如何得到curl的回应,我可以记录(错误或成功)?在bash中获取cURL响应
eval curl -T "${xmlFolder}"/"${xmlFile}" "${mediaFTP}"
在此先感谢
答
鉴于命令提供的,这应该足够了:
curl -T "$xmlFolder/$xmlFile" "$mediaFTP" ||
printf '%s\n' $?
或者,如果你想放弃的错误消息:
curl -T "$xmlFolder/$xmlFile" "$mediaFTP" >/dev/null ||
printf '%s\n' $?
+0
你能解释%s干什么吗?和“>/dev/null”在你的第二位代码?谢谢! – RGilkes
+0
Hi @RGilkes,'%s'是一个格式化字符串,它告诉printf如何显示它的参数(在本例中它意味着字符串)。有关更多信息,请参见man 3 printf。 在这种情况下,为了丢弃_curl_命令写入其标准输出的输出(因为在这种情况下,我们不需要它),必须重定向到'/ dev/null'。 –
是否有一个原因,你在这里使用'eval'?它看起来会导致文件路径中的特殊字符(例如空格)错误分析。 –
不是。如果我放弃'eval',它会正常工作? – RGilkes
除非有'eval'需要存在的特定原因(例如其中一个变量中的某些内容需要经过额外的解析级别),否则应该将其删除。 “eval”作为错误的来源有着当之无愧的声誉。 –