![변수 값을 증가시키기 위한 쉘 스크립트 [닫기]](https://linux55.com/image/11401/%EB%B3%80%EC%88%98%20%EA%B0%92%EC%9D%84%20%EC%A6%9D%EA%B0%80%EC%8B%9C%ED%82%A4%EA%B8%B0%20%EC%9C%84%ED%95%9C%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%E2%80%8B%E2%80%8B%5B%EB%8B%AB%EA%B8%B0%5D.png)
실행할 때마다 변수 값을 증가시키는 쉘 스크립트를 어떻게 만들 수 있습니까? 변수의 값이 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
인스턴스 간에 공유 할 수 있는 변수