сценарий оболочки Bourne

Я пытаюсь преобразовать эту строку программы C для избиения сценария: C:

bin = bin+d*10^n-1;

мусорное ведро, d, n объявляются как международный удар:

bin=`exp $bin+$d\*10^n-1`

но это неправильно

1
задан 11 November 2018 в 07:44

1 ответ

Bash имеет встроенную функциональность для арифметических выражений. Функцию называют "Арифметическим Расширением". Страница справочника удара содержит больше информации.

Синтаксис является $ ((выражение)). В Вашем случае сценарий мог бы содержать следующее.

#!/bin/bash

set -x

bin=1
d=2
n=3
echo $((${bin} + ${d}*10^${n}-1))

Приоритет оператора напоминает C, но не является точно тем же, поскольку Bash и C поддерживают различные операторы. Вот полезная ссылка: https://www.gnu.org/software/bash/manual/html_node/Shell-Arithmetic.html#Shell-Arithmetic

Вышеупомянутое является соответствующим только потому, что операнды являются C ints. Арифметическое Расширение не поддерживает арифметику с плавающей точкой.

1
ответ дан 7 December 2019 в 15:11

Другие вопросы по тегам:

Похожие вопросы: