懂shell脚本的来看看,这个( )>>$logfile是什么意思?,还有while read line;是什么意思?请教了。

IP_LIST="127.0.0.10.0.0.0"#提供远程主机IP地址列表(foripin$IP_LISTdosshslynux@$ip'df-H'|grep^/de... IP_LIST="127.0.0.1 0.0.0.0"
# 提供远程主机IP地址列表
(
for ip in $IP_LIST
do
ssh slynux@$ip 'df -H' | grep ^/dev/ > /tmp/$$.df

while read line;
do
cur_date=$(date +%D)
printf "%-8s %-14s " $cur_date $ip
echo $line | awk '{ printf("%-9s %-8s %-6s %-6s %-8s", $1,$2,$3,$4,$5); }'

pusg=$(echo $line | egrep -o "[0-9]+%")
pusg=${pusg/\%/};
if [ $pusg -lt 80 ];
then
echo SAFT
else
echo ALERT
fi
done< /tmp/$$.df
done
)>>$logfile
展开
 我来答
百度网友5311d79
2014-10-22 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3221万
展开全部
( ) >>$logfile

( )中的语句会在新建shell中执行(产生一个新进程),其中任何语句的标准输出都会被重定向到log文件$logfile中去(追加写方式)。

 

while read line
do
   ......
done </tmp/$$.df

读取文件/tmp/$$.df,read命令每次读取一行内容,所以while循环的每次迭代都只处理该文件的一行内容(变量line)。

$$ 表示当前进程的PID,最常见的用途就是用作临时文件的名字以保证文件名不重复。

更多追问追答
追问
pusg=${pusg/\%/}; 这句是把%去掉?还是显示匹配的有%的行?最后重新赋值
追答

这是字符串替换方法。

看下面的例子就明白:

作用就是去除第一个%(将第一次出现的%替换为空)。%有特殊含义,前面需要加转义符。


${x/a/b} 

将字符串x中的第一个a替换为b。

echo ${x//a/b} 

将字符串x中的所有a都替换为b。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式