Вы не можете скрыть что-либо от root , если только вы не используете шифрование, и даже тогда root все равно может это удалить!
Утилита bc
не понимает 6.65E+07
как нужное вам число.
В OpenBSD E
здесь шестнадцатеричное число, поэтому 6.65E
равно 6,664 (6,65 + 0,014 ), а затем +07
добавит к этому 7, что даст 13,664, а это явно меньше, чем 50.960. В системах GNU 6.65E
— это 6.659
, что тоже не то, что вам нужно.
Вместо этого вы хотите, чтобы num2
была строкой 6.65*10^7
или 66500000
.
$ num1=50.960; num2='6.65*10^7'; printf '%s < %s\n' "$num1" "$num2" | bc
1
Если вы хотите использовать num2 как есть, вы можете использовать awk:
awk -v num1="$num1" -v num2="$num2" 'BEGIN{exit num1<=num2}'
Это сравнит два числа и выдаст 1, если num1 меньше num2, или 0 в противном случае.
Обратите внимание, :это приведет к выходу из 1, если num1 и num2 равны, что является тем же поведением, которое вы увидите из bc в этом случае, если вы хотите, чтобы он вышел из 0 в этом случае вам нужно будет использовать вместо этого <
из <=
.
Да, bc
мог выполнять все виды математических операций. Но он не понимает поплавки. printf современной оболочки понимает числа с плавающей запятой, но не может выполнять математику.
Давайте присоединимся к ним:
$ num1=50.960
$ num2=6.65E+07
$ printf '%f < %f\n' "$num1" "$num2" | bc -l
1