У меня есть резервная копия script на моем сервере, которая выполняет задания резервного копирования cron, и отправляет мне сводку резервных копий файлов, включая размер нового файла резервной копии. Как часть script, я бы хотел разделить окончательный размер файла на (1024 ^ 3), чтобы получить размер файла в GB, от размера файла в байтах.
Так как bash не имеет вычисления с плавающей запятой, я пытаюсь использовать pipe для bc, чтобы получить результат, однако я нахожусь в тупике на основных примерах.
Я попытался получить значение Pi в масштабе, однако
хотя работает следующее:
~ #bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
4/3
1.33333333333333333333
22/7
3.14285714285714285714
q
0
quit
Неактивная версия не работает:
#echo $(( 22/7 )) | bc
3
Это работает:
#echo '22/7' | bc -l
3.14285714285714285714
Но мне нужно использовать переменные. Так что это не помогает, что следующее не работает:
#a=22 ; b=7
#echo $(( a/b )) | bc -l
3
Я явно пропустил что-то в синтаксисе для использования переменных в Bash и мог использовать с некоторыми "указателями" то, что я неправильно понял.
Как сказал DigitalRoss, я могу использовать следующее:
#echo $a / $b | bc -l
3.14285714285714285714
Однако я не могу использовать сложные выражения, например:
#echo $a / (( $b-34 )) | bc -l
-bash: syntax error near unexpected token `('
#echo $a / (( b-34 )) | bc -l
-bash: syntax error near unexpected token `('
#echo $a / (( b-34 )) | bc -l
-bash: syntax error near unexpected token `('
Может ли кто-нибудь дать мне правильный правильный синтаксис для получения результатов с плавающей запятой со сложными арифметическими выражениями?