有没有办法在bash中找到一个值的2指数形式。
例如,如果我输入512,结果应该是输出9,即2^9是512。
非常感谢您的帮助-谢谢

最佳答案

使用awk

$ echo 512 | awk '{print log($1)/log(2)}'
9

把它放到脚本中(expo.sh):
#!/bin/bash

_num="$1"
expon=$(awk -v a="$_num" 'BEGIN{print log(a)/log(2)}')
if [[ $expon =~ ^[0-9]+\.[0-9]*$ ]]; then # Match floating points
    echo "$_num is not an exponent of 2"; # Not exponent if floating point
else
    echo "$_num = 2^${expon}"; # print number
fi

运行:
$ ./expo.sh 512
512 = 2^9
$ ./expo.sh 21
21 is not an exponent of 2

关于bash - 如何在shell中找到2指数的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48910300/

10-13 04:24