Shell 设置环境变量并在以后检索
我想让一个一旦启动的可执行shell脚本执行某个操作,如果在第二次启动时再次启动,则撤消该操作。我试图定义一个环境变量来确定操作是否已经执行,但我无法使它工作Shell 设置环境变量并在以后检索,shell,Shell,我想让一个一旦启动的可执行shell脚本执行某个操作,如果在第二次启动时再次启动,则撤消该操作。我试图定义一个环境变量来确定操作是否已经执行,但我无法使它工作 #!/bin/bash if [ -z ${CUSTOM_VARIABLE} ] then CUSTOM_VARIABLE=true export CUSTOM_VARIABLE # do stuff here else # undo stuff here unset CUSTOM_VARIA
#!/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() {
if [[ -z "${CUSTOM_VARIABLE}" ]]
then export CUSTOM_VARIABLE=true
else unset CUSTOM_VARIABLE
fi
}
YMMV
祝您好运。此脚本正在启动的子shell中设置自定义_变量,以便运行脚本。一旦子shell退出并返回您在子shell中设置的变量,子shell就不在父shell的环境中。这是shell编码的一个相当大的部分,所以我建议您进一步讨论:这就是文件系统的用途。
$: x() {
if [[ -z "${CUSTOM_VARIABLE}" ]]
then export CUSTOM_VARIABLE=true
else unset CUSTOM_VARIABLE
fi
}