실행할 때마다 변수 값을 증가시키는 쉘 스크립트를 어떻게 만들 수 있습니까? 변수의 값이 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
인스턴스 간에 공유 할 수 있는 변수