就像c中某个函数的静态变量所提供的功能一样。 在bash脚本中多次调用程序时,必须将前一次调用的数据保留到下一次调用。 通常,当我们在bash中运行程序时,它会在完成后终止。
我想要的是程序运行时,它一定不能自行终止并保持运行,直到调用kill命令明确终止为止。 这样我们就可以继续调用要在平均时间内使用的程序。
答案 0 :(得分:0)
您正在寻找类似这样的声音
$ cat tst.sh
#!/bin/env bash
trap 'echo "No - go away!" >&2' SIGINT
while :; do
printf '.'
sleep 5
done
$ ./tst.sh &
[1] 1309
$ ..
$ kill -SIGINT 1309
$ No - go away!
..
$ kill -9 1309
$
[1]+ Killed ./tst.sh
我使用陷阱只是为了表明该进程正在运行,并且可以与之交互,直到您杀死它为止(本例中为-9)
答案 1 :(得分:0)
在bash脚本中多次调用程序时,必须将前一次调用的数据保留到下一次调用
这些是我能想到的解决方案
static_var_file=/tmp/static_var
# or use /usr/tmp/static_var to save it between reboots
# load
static_var=$([ -f "$static_var_file ] && cat "$static_var_file" || echo 0)
# the script here
static_var=$((static_var+1))
# save
echo "$static_var" > "$static_var_file"
static_var=0 # MARK
# the script here
static_var=$((static_var+1))
# self modify ourselves to store new value
sed '/^static_var=.* # MARK$/s/.*/static_var="'"$static_var"'" # MARK/' "$0"