在BASH脚本中,我需要从curl中取得4件事:
m=$(curl -u "$user":AP"$pass" -T "$pathA" "$url") if [ $? -ne 0 ] ; then echo "Error: ""$m" fi
问题是卷曲使$ m变得毫无意义。它只是将错误转储到控制台而不是m。我不希望打印任何东西,除非我回显它。而且我只想捕获错误描述。我尝试了许多变体,似乎对于此用例没有任何作用……至少在堆栈上没有任何建议。
答案 0 :(得分:0)
curl
向STDERR发送错误,并且{strong>不会被$m
捕获。 curl
的输出发送到STDERR(您提到的那个乱码)。
一种解决方案是通过在脚本的2>&1
调用中添加curl
来将STDERR重定向到STDOUT:
m=$(curl -u "$user":AP"$pass" -T "$pathA" "$url" 2>&1)
if [ $? -ne 0 ] ; then
echo "Error: ""$m"
fi
如果您只关心错误,则也可以像本例中一样使用--fail
的{{1}},--silent
和--show-errors
标志:
Making curl send errors to stderr and everything else to stdout
以及有关在bash脚本中将STDERR捕获到curl
的一些信息: