2 #首先判断有没有启动失败的文件,有则处理
3 if [ -f "./task_start_failed.log" ]&&[ ` ls -l task_start_failed.log| awk '{print $5}' ` -gt 0 ]; then
4 # 将失败的任务id 保存在数组array中
5 array=(`cat task_start_failed.log |awk -v RS='' '{gsub("\n"," "); print}'`)
6 #删除日志文件
7 rm -f task_start_failed.log
8 rm -f console.log
9 #对失败的任务,再次启动
10 for task_id in ${array[@]}
11 do
12 result=`curl -u zhangchangchang:ec60d778b5d31777afc6dd20ee5b1ae4 http://pie.baidu.com/api/task -d 'task_id='$task_id'&method=start' -X PUT 2>console.log`
13 # 根据启动的返回结果,将启动不成功的任务id记录下来
14 if [[ $result =~ "task start failed" ]];then
15 echo ${task_id}>>task_start_failed.log
16 fi
17 done
18 fi
cat task_ids | while read task_id
8 do
9 result=`curl -u zhangchangchang:ec60d778b5d31777afc6dd20ee5b1ae4 http://pie.baidu.com/api/task -d 'task_id='$task_id'&method=start' -X PUT 2>console.log`
10 # 根据启动的返回结果,将启动不成功的任务id记录下来
11 if [[ $result =~ "task start failed" ]];then
12 echo ${task_id}>>task_start_failed.log
13 fi
14 done
总结:(1)利用awk命令cat task_start_failed.log |awk -v RS='' '{gsub("\n"," "); print}
RS=“” 表示利用“”来分割前面显示的结果,gsub将换行符\n替换为空格“ ”,打印出换行符转为空格的字符串,加括号后会形成一个数组,赋给array;
(2)shell中逻辑&&的使用方法;
(3)shell循环遍历一个数组;
(4)shell如何判断一个字符串包含某个特征串;
(5) shell读取文件