设置环境变量并在以后检索

时间:2018-11-02 15:44:54

标签: shell

我想创建一个可执行的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

这是正确的方法吗?我该如何修复代码

预先感谢

1 个答案:

答案 0 :(得分:1)

注意jdv的评论。

您不能将脚本作为独立执行运行,并且不能改变其父级环境。称为x.sh

x.sh

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

. x.sh

读取它并在当前范围内执行其内容,这样就可以了。可以说,您并没有真正在创建一个单独的程序-仅存储脚本的脚本列表并使用源速记来批量执行它们。

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

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

YMMV。

祝你好运。