변수 값을 증가시키기 위한 쉘 스크립트 ​​[닫기]

변수 값을 증가시키기 위한 쉘 스크립트 ​​[닫기]

실행할 때마다 변수 값을 증가시키는 쉘 스크립트를 어떻게 만들 수 있습니까? 변수의 값이 5이고 스크립트를 다시 실행하면 1이 증가한다고 가정합니다. 값이 100을 초과하면 100에서 50을 뺍니다.

답변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)))

POSIX적으로:

incr() {
  : "$((($1 = $1 + 1) <= 100 || ($1 = 50)))"
}

¹ 한 가지 예외는 셸 fish과 그흔한fish인스턴스 간에 공유 할 수 있는 변수

관련 정보