Проблема в том, что вы используете dh -h
, что означает «читаемый человеком», и всегда добавляете единицу после числа (M, G, k ...). Есть много вариантов, как вырезать его на grep
, awk
, cut
или sed
. Но, возможно, лучший способ - использовать другой параметр, например df -m
, чтобы получить вывод в мегабайтах и умножить требуемое пространство.
Также я бы предложил добавить grep $destination
(точка монтирования, видимая в выводе df) к отфильтруйте требуемую FS и не полагайтесь на то, что это всегда последняя строка в выводе.
Попробуйте что-то вроде этого:
destination="$HOME/Desktop/sandbox"
free_space=$(df -h | grep $destination | awk '{print $4}')
if [ $free_space -lt $((300 * 1024)) ]; then
echo "There is less than 300GB available..." ;
exit
else
for files in *.tar; do
echo copying "$files"
cp "$files" "$destination"
read -n 1 -p "Press any key..."
done
fi