Почему я получаю синтаксическую ошибку со своей арифметикой Shell?

Если Вы будете полной графической средой на своем поле (X и некоторая настольная среда как Gnome или KDE), то это будет, несомненно, процесс Вашей настольной среды. Это, вероятно, создаст каталог Desktop каждый раз, когда Вы входите в систему. Процесс, ответственный за создание каталога, абсолютно зависит, на которой настольной среде Вы работаете.

5
29.10.2011, 07:13
2 ответа

Можно использовать dc для результатов произвольной точности:

precision=4 var1=3 var2=4 var3=5
a=`echo "$precision k $var1 $var2 * $var3 /p" | dc`

должен работать приблизительно в каждом варианте Unix с 1977 или около этого. Если Вы знаете, что у Вас есть гну dc доступный более краткое

a=`dc -e "$precision k $var1 $var2 * $var3 /p"`

может использоваться.

6
27.01.2020, 20:37

Для Вашего примера с parens необходимо выйти из них также: expr \( $var1 + $var2 \) / $var3 (и не опускайте пробелы, или expr будет жаловаться).

В bash можно также использовать встроенное арифметическое расширение как это: echo $(( ($var1+$var2)/$var3 ))

И для инфиксных вычислений существует bc (в то время как dc для обратной польской записи).

2
27.01.2020, 20:37
  • 1
    getcombination () {tempres=1 a=expr \($2-1 \) + 1 b=1, в то время как [-le 2$-a b - le 1$] делают tempres=expr \($tempres \* \) / b =expr $a + 1 b =expr $b + 1 сделанный $tempres эха} Это все еще дает expr ошибки.... –  3sdmx 31.10.2010, 13:48
  • 2
    Вы могли использовать pastebin или подобный сервис для регистрации точного незаконного кода (предпочтительно, абсолютный минимум его должен был воспроизвести проблему)? У меня есть трудное время, дешифруя то, что Вы вставляете этот комментарий. –  alex 01.11.2010, 12:10
  • 3
    @3sdmx: просто не беспокойтесь expr, используйте арифметику оболочки $((…)) вместо этого. @alex: $((…)) не характерно для удара, это находится в POSIX. –  Gilles 'SO- stop being evil' 01.11.2010, 20:38

Теги

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