Сценарий оболочки — это приложение, написанное на каком-либо языке оболочки, оно может изменять значение только своих собственных переменных, а не переменной какого-либо другого процесса, такого как вызывающий здесь¹
Если вы хотите увеличить значение переменной оболочки в своей оболочке, и ваша оболочка является оболочкой, подобной POSIX -, вы можете вместо этого использовать функцию:
incr() {
var=$((var + 1))
if [ "$var" -gt 100 ]; then
var=50
fi
}
Который с Korn -как шеллы (ksh, zsh, bash ), можно сократить до:
incr() ((++var <= 100 || (var = 50)))
Или чтобы имя переменной передавалось в качестве аргумента:
incr() ((++$1 <= 100 || ($1 = 50)))
POSIXly:
incr() {
: "$((($1 = $1 + 1) <= 100 || ($1 = 50)))"
}
¹ Исключением является оболочка fish
с ее универсальными переменными, которые могут совместно использоваться fish
экземплярами