我想创建一个可执行的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
这是正确的方法吗?我该如何修复代码
预先感谢
答案 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。
祝你好运。