Я публиковал это как ответ на https://stackoverflow.com/a/56415379/1745001, когда он был закрыт как дубликат этого вопроса, так что здесь, как и здесь:
Для простоты и ясности просто используйте awkдля вычислений, так как это стандартный инструмент UNIX и поэтому с такой же вероятностью будет присутствовать как bc, и с ним намного проще работать синтаксически.
Для этого вопроса:
$ cat tst.sh
#!/bin/bash
num1=3.17648e-22
num2=1.5
awk -v num1="$num1" -v num2="$num2" '
BEGIN {
print "num1", (num1 < num2 ? "<" : ">="), "num2"
}
'
$ ./tst.sh
num1 < num2
и для другихвопрос, который был закрыт как дубликат этого:
$ cat tst.sh
#!/bin/bash
read -p "Operator: " operator
read -p "First number: " ch1
read -p "Second number: " ch2
awk -v ch1="$ch1" -v ch2="$ch2" -v op="$operator" '
BEGIN {
if ( ( op == "/" ) && ( ch2 == 0 ) ) {
print "Nope..."
}
else {
print ch1 '"$operator"' ch2
}
}
'
$ ./tst.sh
Operator: /
First number: 4.5
Second number: 2
2.25
$ ./tst.sh
Operator: /
First number: 4.5
Second number: 0
Nope...