注意jdv的注释。
我想让一个可执行的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
这是一个正确的方法吗?如何修复代码
提前感谢
您不能将脚本作为独立执行来运行,也不能让它改变父级的环境。称之为x.sh
,
x.sh
永远不会改变你的环境。另一方面,您可以源它。
. x.sh
它读取它并在当前范围内执行它的内容,这样就可以工作了。你并不是真的在创建一个单独的程序来做这件事——可以说,只是存储一个命令的脚本列表,并使用源代码缩写来批量执行它们。
您也可以将其定义为类似结果的函数-
$: x() {
if [[ -z "${CUSTOM_VARIABLE}" ]]
then export CUSTOM_VARIABLE=true
else unset CUSTOM_VARIABLE
fi
}
YMMV。
祝你好运。