如何制作一个 shell 脚本,每当我运行它时,它都会增加变量的值。假设如果一个变量的值为 5,并且如果我再次运行该脚本,它会在其中增加 1。如果该值超过 100,则会从 100 中减去 50。
答案1
shell脚本是用某种shell语言编写的应用程序,它只能更改自己变量的值,而不能更改其他进程的变量(例如这里的调用者)
如果您想增加 shell 中 shell 变量的值,并且您的 shell 是类似 POSIX 的 shell,则可以使用函数来代替:
incr() {
var=$((var + 1))
if [ "$var" -gt 100 ]; then
var=50
fi
}
使用类似 Korn 的 shell(ksh、zsh、bash),您可以缩短为:
incr() ((++var <= 100 || (var = 50)))
或者将变量的名称作为参数传递:
incr() ((++$1 <= 100 || ($1 = 50)))
POSIXly:
incr() {
: "$((($1 = $1 + 1) <= 100 || ($1 = 50)))"
}
¹ 一个例外是 shellfish
及其普遍的可以在fish
实例之间共享的变量