Использование терминала Mac и сценария оболочки

Попытка сделать ярлык оператора добавления и присваивания, например

SumVar=1

$(( SumVar += 5 ))

echo $SumVar

Получение ошибки:

Ошибка: строка 3: 5: команда не найдена

Каков правильный синтаксис этого?

0
Sujay U N 1 Янв 2018 в 00:10

2 ответа

Лучший ответ

Ваш синтаксис для увеличения переменной правильный, но вы используете его в контексте, когда Bash хочет команду, и он жалуется, что результат увеличения (4) не является распознанной командой.

Ключевое слово let - ваш друг.

let SumVar+=4

А еще лучше просто опустить знак доллара (спасибо @chepner);

(( SumVar += 4 ))
2
tripleee 31 Дек 2017 в 22:08

Когда вы используете такую замену, bash попытается выполнить команду с замененным именем / значением. Вместо этого вы можете использовать это:

(( Sumvar += 5 ))

Или, если вы действительно настаиваете на использовании подстановки здесь, вы можете использовать ее в качестве аргумента команды ::

: $(( Sumvar += 5 ))
2
PesaThe 31 Дек 2017 в 21:30