有没有办法在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/