if语句中的Shell条件

时间:2016-10-11 05:08:16

标签: linux bash shell unix

我希望创建一个监视器,并在下面的代码中需要一些帮助。我现在在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

1 个答案:

答案 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的帮助。