Shell Scripting: вычислить мощность числа с реальным числом в качестве показателя

Я использую shell-скрипты, и я использую следующее выражение:

A=`echo "(( (($a / $b) ^ 0.3) -1 ))" |bc -l` 

Я хочу иметь действительное число в качестве экспоненты. Я заметил, что если я помещаю 0,3, он округляется до целого и принимает силу нуля. Аналогично, если я использую 5.5 или 5.9 вместо 0,3 в приведенном выше выражении, я получаю тот же ответ.

Как рассчитать мощность числа с показателем, являющимся действительным числом, а не целым числом

3 Solutions collect form web for “Shell Scripting: вычислить мощность числа с реальным числом в качестве показателя”

Почему вы не можете использовать awk или perl one-liner для его обработки?

 echo "$a $b" | awk '{ print ((($1/$2)^0.3) -1); }' 

Боюсь, вы не можете использовать bc для этого. Он не поддерживает показатели с плавающей запятой. Как объясняется в man bc :

expr ^ expr

Результатом выражения является значение первого, поднятого во второе. Второе выражение должно быть целым числом . […]

Таким образом, вам придется использовать что-то еще, например awk :

 awk -va="$a" -vb="$b" 'BEGIN{print ((a/b)^0.3)-1}' 

или, как предложил Деннис Джейкоб:

 echo "$a $b" | awk '{print ((($1/$2)^0.3) -1);}' 

Или perl :

 perl -le 'print ((($ARGV[0]/$ARGV[1])**0.3)-1)' "$a" "$b" 

или

 echo "$a $b" | perl -lane 'print ((($F[0]/$F[1])**0.3) -1)' 

Вы можете использовать r вместо bc:

 A=$(echo "x=( ( ($a / $b) ** .3 ) -1 );print (x)" | r) 

но, конечно, больше языков программирования может решить эту проблему.

  • Временная метка не обновляется
  • Повторное использование пользовательского ввода в скрипте
  • Любой способ в Bash писать в файл каждые X секунд, не закрывая его?
  • Переименование нескольких каталогов, вставляемых между
  • сценарий оболочки для создания каталогов, подкаталогов и файлов по шаблону
  • Загружать программные двоичные файлы при загрузке
  • Массив Декартово произведение в bash
  • Сценарий Bash для вывода пути на флеш-накопитель USB
  • Есть ли элегантный способ установить переменную оболочки в содержимое файла?
  • Как выбрать файлы в сценарии bash, у которых нет расширения?
  • Каково первое событие / файл / журнал в Linux, который появляется / изменяется при загрузке, сигнализируя о том, что сеть работает?
  • Итерация по нескольким параметрам с пробелами в сценарии bash
  • Interesting Posts

    Должен ли я закончить мои текстовые / скриптовые файлы с помощью новой строки?

    Выбор управляемого коммутатора с Linux для использования в проекте сетки (batman-adv)

    Как получить дату с двухнедельной давности с использованием даты Solaris?

    Обнаружение подключения / разъединения наушников в Linux

    Проверьте рекурсивно, если существуют каталоги в пути

    Клавиши Remap на GNOME3.8 с использованием xmodmap?

    .bash_logout или .zlogout не анализируется при автозапуске xserver непосредственно после входа на консоль

    Как создать саморазрушающуюся веб-страницу?

    Как удалить файл в каталоге только для чтения?

    Как распечатать разницу между максимальным и минимальным значением записи?

    Как безопасно возобновить aptitude dist-upgrade после тайм-аута SSH?

    Как открыть все файлы в текущем каталоге и во всех подкаталогах с помощью vim?

    Что такое большой файл со странным именем в каталоге home / ?

    Попросите определенные ключи пройти через lockscreen

    Команда, чтобы скрыть все, кроме окна просмотра в окне терминала?

    Linux и Unix - лучшая ОС в мире.