[英]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.