Bash Скрипт | Вычитание процента из свободного дискового пространства - PullRequest
0 голосов
/ 12 апреля 2020

Попытка вычесть процент из переменной, предпочтительно с плавающей запятой (11,3%), иначе 12%

freespace=100
subtract=$(($freespace-$freespace*.113))

Обновление 1:

Вот объяснение того, что я пытаюсь на выполнение sh: я сокращаю фактическое свободное пространство на 11,3%. если файл, который я копирую, больше, чем вычитаемое свободное пространство, тогда сценарий предложит пользователю создать больше места. Команда b c возвращает плавающую точку. Чтобы это работало, вывод b c должен быть без десятичных знаков. Команда df -m выводит в мегабайтах и ​​без десятичных знаков. Я не могу сравнить 18000 МБ с 120000,00 МБ (b c вывод) в bash.

source="/some/dir"
destination="/some/dir

freespace="$(df -m "${destination}" | tail -1 | awk '{print $4}')" 

reduced_percentage=".113" # minus 11.3 percent of actual freespace

reduced_freespace=$(bc <<< "$freespace * (1-$reduced_percentage)")

source_size="$(du -sm "${files}" | tail -1 | awk '{print $1}')"

if [[ "${reduced_freespace}" -lt "${source_size}" ]] ; then

read -r -n 1 -p "you do not have enough free space, create free space to continue..."  

elif [[ "${reduced_freespace}" -gt "${source_size}" ]] ; then

some commands

fi
done

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Вы можете использовать awk для вычисления числа с плавающей запятой

$awk -v freespace=100 'BEGIN {print freespace-(freespace) * 0.113}' 
88.7
$
0 голосов
/ 12 апреля 2020

вам нужно выучить команду bc.

Попробуйте, а затем прочтите здесь .

freespace=100
pct=.113
subtract=$(bc <<< "$freespace * (1-$pct)")
...