尝试通过脚本检查可用的hdd空间:
df -h :
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 9.1G 8.7G 52% /
命令是:
com=`df -h | awk '{print $5}' | grep % | grep -v Use | sort -n | tail -4 | cut -d % -f1`
echo $com
52 74 100 100
我想为我的支票隔离“52”,所以:
for i in ${com[@]};do
> echo ${com[0]:0:2}
> done
52
52
52
52
好的,我设法为后来的检查检索了正确的数字,但为什么命令会返回数字“52”四次?
非常感谢
答案 0 :(得分:1)
您不希望在这个简单的用例中使用bash
脚本。此外,您正在使用一堆awk
,grep
命令将输出存储在变量中,而不是存储在数组的上下文中。
您只需使用简单的Awk
命令
df -h | awk 'NR==1{for(i=1;i<=NF;i++) if ($i == "Use%"){ ind=i; break}} NR==2 {n=split($0, val); used=val[ind]; sub(/%/,"",used); print used}'
上述命令首先查找标题行中存储了Use%
的列,然后在下一行的同一列中查找实际值。
要在变量存储中使用输出,命令替换的输出如下
used_storage=$(df -h | awk 'NR==1{for(i=1;i<=NF;i++) if ($i == "Use%"){ ind=i; break}} NR==2 {n=split($0, val); used=val[ind]; sub(/%/,"",used); print used}')
echo "$used_storage"