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
这是一个正确的方法吗?如何修复代码
提前致谢
解决方案
注意jdv的评论。
您不能将脚本作为独立执行运行并让它改变父级的环境。调用它x.sh
,
x.sh
永远不会改变你的环境。另一方面,您可以采购它。
. x.sh
它读取它并在当前范围内执行其内容,这样就可以了。您并没有真正创建一个单独的程序来执行此操作 - 只是存储一个脚本化的命令列表并使用源速记来批量执行它们,可以这么说。
您还可以将其定义为类似结果的函数 -
$: x() {
if [[ -z "${CUSTOM_VARIABLE}" ]]
then export CUSTOM_VARIABLE=true
else unset CUSTOM_VARIABLE
fi
}
YMMV。
祝你好运。
推荐阅读
- arrays - cv2 视频到图像数组
- service - 缺少 VMware 身份验证服务
- java - org.hibernate.PersistentObjectException:分离的实体被传递以保持多对多关系
- html - Outlook 弄乱了 HTML 链接 - 不维护 % 字符
- python - 我想知道如何只使用 Unix 时间戳的日期部分。我将无法弄清楚的部分留空
- python - Kivy ScrollView 不会滚动到较低的内容
- python - 通过数组调用对象的属性(python)
- html - 我怎样才能让我的页脚满足 VP 的结尾
- python - 如何将文本写入临时文件?
- python - 如何优雅地构建伯努利分布置信度的蒙特卡罗模拟