Сценарий оболочки для увеличения значения переменной [закрыт]

-2
24.09.2018, 08:20
1 ответ

Сценарий оболочки — это приложение, написанное на каком-либо языке оболочки, оно может изменять значение только своих собственных переменных, а не переменной какого-либо другого процесса, такого как вызывающий здесь¹

Если вы хотите увеличить значение переменной оболочки в своей оболочке, и ваша оболочка является оболочкой, подобной 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экземплярами

.
1
28.01.2020, 05:16

Теги

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