El formato legible humano -de los números interfiere, por lo que primero debe tener una salida consistente. Portable, puede usar la opción -P
para generar en bloques de 1024
df -P | awk 'NR>2{sum+=$2}END{print sum}'
Si usa GNU df
puede especificar --blocksize
opción:
df --block-size=1 | awk 'NR>2{sum+=$2}END{print sum}'
NR>2
es para evitar tener que lidiar con la línea de encabezado Size
. En cuanto a volver a formatear los datos en un formato legible por humanos, si está en Linux puede usar la herramienta numfmt
; de lo contrario, -implemente el convertidor en awk
. Consulte la respuesta relacionada .
Tenga en cuenta también que df
genera tamaños para todos los sistemas de archivos, incluidos los sistemas de archivos virtuales como udev
y tmpfs
. Puede considerar filtrarlos si solo desea los discos físicos reales. Entonces, si consideramos solo los sistemas de archivos que tienen un archivo de dispositivo representado en el sistema de archivos /dev/
, probablemente podría usar algo como esto:
df -P | awk 'NR>2 && /^\/dev\//{sum+=$2}END{print sum}'
Con GNU df
, también podría considerar usar el indicador --local
para ignorar la eliminación de sistemas de archivos.
Как вы можете проверить сами здесь ,
$ shellcheck myscript
Line 50:
for fileName in $FILE_LIST; do
^-- SC1073: Couldn't parse this for loop.
^-- SC1061: Couldn't find 'done' for this 'do'.
Line 60:
fi
^-- SC1062: Expected 'done' matching previously mentioned 'do'.
^-- SC1072: Unexpected keyword/token. Fix any mentioned problems and try again.
Посмотрите пример ниже, это поможет вам понять оператор if
#!/bin/bash
if [ -f "$1" ]
then
echo "$1 is a file"
else
echo "$1 is not a file"
fi