尝试创建一个环境变量,该变量将在设置的时间后失效。
用例:
我登录到终端上的服务,我想保存例如ACC_ID=123456
到环境变量,然后在终端提示符下将其打印出来:
(123456)-(name)$
使用以下fish方法来设置acc_id
环境变量:
function acc_id
cd /path/to/script/
./login_to_service.sh $argv
set -Ux ACC_ID $argv
cd -
end
ACC_ID
一直存在,直到我重新运行acc_id
功能
1小时后,我希望它执行以下操作之一:
ACC_ID
设置为环境变量ACC_ID
设置为空字符串我可以设置一个计划任务来执行此操作,但是我想知道是否有更合适或内置的方法。
答案 0 :(得分:2)
function acc_id
cd /path/to/script/
./login_to_service.sh $argv
set -Ux ACC_ID $argv
cd -
# the magic
sleep 1h &
function _unset_accid --on-process-exit (jobs --last --pid)
set -e ACC_ID
functions -e (status function)
end
end
我删除了内部函数中的函数:它将在pid编号退出时随时触发,因此我们不希望它挂在那个pid上等待 any 进程。
这是一个演示:
$ function set_var_for_a_while
set -gx MYENVVAR "variable value created "(date '+%s')
sleep 5 &
function _unset_my_var --on-process-exit (jobs --last --pid)
set -e MYENVVAR
functions -e (status function)
end
end
$ set_var_for_a_while; type _unset_my_var; for i in (seq 6); printf "%s\t%s\n" (date) $MYENVVAR; sleep 1; end; type _unset_my_var
输出:
_unset_my_var is a function with definition
function _unset_my_var --on-process-exit 68077
set -e MYENVVAR
functions -e (status function)
end
Mon Jun 24 10:21:51 EDT 2019 variable value created 1561386110
Mon Jun 24 10:21:52 EDT 2019 variable value created 1561386110
Mon Jun 24 10:21:53 EDT 2019 variable value created 1561386110
Mon Jun 24 10:21:54 EDT 2019 variable value created 1561386110
Mon Jun 24 10:21:55 EDT 2019 variable value created 1561386110
Mon Jun 24 10:21:56 EDT 2019
type: Could not find '_unset_my_var'