Как добавить арифметические переменные в сценарии

Я решил эту проблему путем добавления

xhost +si:localuser:$USER

кому: ~/.xprofile. Я не знаю, безопасно ли это в целом (мне очень было бы интересно слышать, какие более хорошо осведомленные люди думают), но я предполагаю, что это намного лучше, чем выключение управления доступом (с xhost +) как обычно предлагается, когда Вы гуглите для этой проблемы.

27
08.11.2012, 00:35
5 ответов

Ваш арифметический синтаксис оценки является неправильным. Используйте любое из следующих (первое является чрезвычайно портативным, но медленным, вторым является POSIX и портативный кроме к Оболочке Bourne и более ранним версиям оболочки Almquist, последние три требуют ksh, bash или zsh):

a=`expr "$a" + "$num"`

a=$(($a+$num))

((a=a+num))

let a=a+num

((a+=num))

Или можно просто пропустить все for цикл и просто делает:

wc -l folder/*

Или, если Вы только хотите общее количество:

cat folder/* | wc -l

Или с zsh и mult_ios опция:

wc -l < folder/*
52
27.01.2020, 19:39
  • 1
    Никакая потребность в $ внутри ((...)). a=$((a+num)) уже прекрасен. –  Weijun Zhou 07.02.2018, 10:08

можно также использовать этот код

    a=`expr $a + $num`
    echo $a

и УДОСТОВЕРЬТЕСЬ, ЧТО СУЩЕСТВУЕТ ПРОСТРАНСТВО С ОБЕИХ СТОРОН + В "$a + $num"

7
27.01.2020, 19:39
  • 1
    всегда дает пространство с обеих сторон оператора при использовании expr команды для вычисления. –  user1678213 07.11.2012, 12:45

Сначала вы можете объявить тип переменной:

    declare -i a=0
    declare -i num=0
2
27.01.2020, 19:39

В ответе необходимо указать , для какой оболочки код действителен. Например, в оболочке Борна(sh)действительны только следующие инструкции:

a=$((a+num))
a=$(($a+$num))

в то время как другие возможности, перечисленные @manatwork, могут быть действительными в оболочке bourne снова (bash)

1
27.01.2020, 19:39

Я делаю так

MY_VARIABLE=$((num1+num2))
-1
27.01.2020, 19:39

Теги

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