设置一个环境变量,稍后再进行检索



我想让一个可执行的shell脚本在启动后执行某个操作,如果第二次再次启动,则撤消该操作。我试图定义一个环境变量来确定操作是否已经执行,但我无法使其工作。

#!/bin/bash
if [ -z ${CUSTOM_VARIABLE} ] 
then
CUSTOM_VARIABLE=true
export CUSTOM_VARIABLE 
# do stuff here
else 
# undo stuff here
unset CUSTOM_VARIABLE
fi

这是一个正确的方法吗?如何修复代码

提前感谢

注意jdv的注释。

您不能将脚本作为独立执行来运行,也不能让它改变父级的环境。称之为x.sh

x.sh

永远不会改变你的环境。另一方面,您可以它。

. x.sh

它读取它并在当前范围内执行它的内容,这样就可以工作了。你并不是真的在创建一个单独的程序来做这件事——可以说,只是存储一个命令的脚本列表,并使用源代码缩写来批量执行它们。

您也可以将其定义为类似结果的函数-

$: x() {
if [[ -z "${CUSTOM_VARIABLE}" ]]
then export CUSTOM_VARIABLE=true
else unset CUSTOM_VARIABLE
fi
}

YMMV。

祝你好运。

最新更新