我在脚本下面运行: -
#!/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: `▒'
请帮我解决这个问题。
答案 0 :(得分:3)
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
答案 1 :(得分:1)
您使用‘
表示单引号而非'
。尝试使用编辑器重新编码文件。
答案 2 :(得分:1)
您得到了语法错误的答案,现在重新编写整个脚本:
#!/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}'