我创建了以下脚本
for i in $(ls /home/test);
do health=$(curl -s http://192.168.1.100/api/stream_health/$i);
if [ $health = "true" ]
then echo "At `date` $i stream is running"
else
ps aux | grep -v grep | grep $(cat /root/bin/xproxy.conf | grep "$i" | cut -f3 -d":" | cut -c1-5) | awk '{print $2}' | xargs kill -9
fi
done;
问题是,当$ i(如果在/root/bin/xproxy.conf中找不到)时,则使用grep error命令退出脚本。我将如何提出某种验证,如果在/root/bin/xproxy.conf中找不到$ i,然后跳过此循环,然后转到下一个循环。
这应该做:
[[ $(grep $i /root/bin/xproxy.conf ]] || continue
1)GREP可以在文件中找到:grep expresion file
。因此,您无需使用:cat file | grep expresion
2.a)您可以使用& amp;操作员,可以将其解释为" 如果上一个命令是成功(真正退出代码= 0)然后 concont
grep $i /root/bin/xproxy.conf && ps aux | grep -v grep | grep $(grep "$i" /root/bin/xproxy.conf | cut -f3 -d":" | cut -c1-5) | awk '{print $2}' | xargs kill -9
2.b)其他方式在用特殊变量对GREP表示辩解后要求退出代码?:
grep $i /root/bin/xproxy.conf &>/dev/null
if [ $? = 0 ]
then
ps aux | grep -v grep | grep $(grep "$i" /root/bin/xproxy.conf | cut -f3 -d":" | cut -c1-5) | awk '{print $2}' | xargs kill -9
fi