繁体   English   中英

运行脚本以查找磁盘空间时出错

[英]Getting error while running script to find disk space

我正在运行以下脚本:-

#!/bin/bash
threshold="20"
i=2
result=`df -kh |grep -v “Filesystem” | awk ‘{ print $5 }’ | sed ‘s/%//g’`
for percent in $result; do
    if ((percent > threshold))
    then
        partition=`df -kh | head -$i | tail -1| awk ‘{print $1}’`
        echo “$partition at $(hostname -f) is ${percent}% full”
    fi
    let i=$i+1
done

但我收到以下错误:

awk: ‘{
awk: ^ invalid char '▒' in expression
sed: -e expression #1, char 1: unknown command: `▒'

请帮我解决这个问题。

什么awk不起作用? (你的脚本在我的 Ubuntu 上运行良好)

这一行:

result=`df -kh |grep -v "Filesystem" | awk '{ print $5 }' | sed 's/%//g'`

可以改为:

result=$(df -kh | awk '!/Filesystem/ {print $5+0}')

如果括号的作用是这样的,请避免使用旧的和过时的反引号: var=$(code...)


这个:

partition=`df -kh | head -$i | tail -1| awk '{print $1}'`

可以改为:

partition=$(df -kh | awk -v line="$i" 'NR==line {print $1}')

这个

let i=$i+1

可以改为:

((i++))

这将给出一些这样的:

#!/bin/bash
threshold="20"
i=2
result=$(df -kh | awk '!/Filesystem/ {print $5+0}')
for percent in $result; do
    if ((percent > threshold))
    then
        partition=$(df -kh | awk -v line="$i" 'NR==line {print $1}')
        echo "$partition at $(hostname -f) is ${percent}% full"
    fi
((i++))
done

您将'用于单引号而不是' 尝试使用编辑器重新编码您的文件。

您得到了语法错误的答案,现在将整个脚本重写为:

#!/bin/bash
df -kh |
awk -v t=20 -v h="$(hostname -f)" '(NR>1)&&($5+0>t){printf "%s at %s is %s full\n",$1,h,$5}'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM