捕捉并重试bash

时间:2018-09-27 15:13:15

标签: bash shell

我遇到了一种情况,即curl试图间歇性地使我在服务器上获取一些信息,并且不使用实际信息填充生成的文件,而是使用获取的错误填充了该文件,然后移至下一个数据点(在for循环中),因此我决定进行捕获并重试。(使用bash)。但是由于某种原因,它没有执行应有的操作,因此生成的文件为空。以下是我写的内容,如果您有更好/更轻松的方法来解决此问题或在下面看到问题,请继续分享。预先感谢。

 for i in `cat master_db_list`
 do
 curl -sN --negotiate -u foo:bar "${URL}/$i/table" > $table_info/${i}
 #Seek error catch
 result=`cat $table_info/${i} | grep  -i "Error"`
 #lowercase comparison, since error can be in any case
 echo -e "result is: $result \n" >> $job_log 2>&1
 while [[ "${result,,}" =~ error ]]
 do
 echo "Retrying table list generation for ${i}" >> $job_log 2>&1
 curl -sN --negotiate -u foo:bar "${URL}/$i/table" > $table_info/${i}
 result=`cat $table_info/${i} | grep  -i "Error"`
 done
 done

1 个答案:

答案 0 :(得分:0)

结果是,上面没有什么问题,一些curl调用返回了空值,降低了寻道频率,中间有睡眠,现在一切正常。