我希望创建一个监视器,并在下面的代码中需要一些帮助。我现在在if语句中有错误。我需要查看每行文件的最后一个参数,并将其与85和echo进行比较,意味着完整输出。
while read line;
do
if [$(cat $line | awk -F':' '{print $5}') -gt 85]
echo "Rootfile system on host $1 has reached $5 percentage"
fi
echo $line
done </home/monitor1.txt
我的文件输出如下所示:
host1:45G:10G:35G:34
host2:45G:15G:30G:41
host3:45G:5G:40G:12
host4:45G:5G:40G:11
答案 0 :(得分:2)
您需要[
命令之后和结束参数]
之前的空格,以及then
之后的]
:
if [ "$(awk -F':' '{print $5}' <<<"$line")" -gt 85 ]; then
echo ...
fi
或者
if [ "$(awk -F':' '{print $5}' <<<"$line")" -gt 85 ]
then
echo ...
fi
此外,您正在读取字符串,而不是文件,因此{错误地使用cat
,使用echo
或此处字符串。同时引用变量扩展以避免单词拆分和路径名扩展。您也可以将整个逻辑合并到awk
中,不需要shell的帮助。