加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用bash检查环境变量的有效性是否存在且是否为真?

发布时间:2020-12-15 18:35:23 所属栏目:安全 来源:网络整理
导读:我正在寻找一个测试,如果定义了环境变量并且其值不同于0,false或NULL,则该测试将返回true. ENABLE_SOMETHING=1# or ENABLE_SOMETHING=trueif ... do ... 注意:在任何情况下,bash都不应该抱怨未定义的变量或具有奇怪的值,除了0,空,假或未定义之外的其他任何
我正在寻找一个测试,如果定义了环境变量并且其值不同于0,false或NULL,则该测试将返回true.
ENABLE_SOMETHING=1
# or ENABLE_SOMETHING=true

if ... do ...

注意:在任何情况下,bash都不应该抱怨未定义的变量或具有奇怪的值,除了0,空,假或未定义之外的其他任何内容都将被视为真.

这样的测试不存在,如Java或C#等高级语言,但构建起来相对容易.

对您提出的问题有三条评论:

1:您不使用bash中的文字“true”/“false”值;所有命令和条件结构都会产生退出状态或逻辑结果,它是0(真)或非0(假).
使用此功能,不要试图重新发明轮子.

2:尽量不要使用大写参数名,除非它们是环境变量;这是一个简单的约定,有助于保持代码清洁.

3:究竟是什么意思是“NULL”?文字字符串NULL,空值或其他什么?
后两个概念在bash中不存在;将取消设置NULL变量,您已经在检查它.

最有效的解决方案是接受变量(或参数,如bash调用它们)的函数,并检查这些条件,然后根据它设置退出状态,有效地将多个真值汇总到文字0或1.

例如:

is_true(){if [[“$1”= 0]];然后是假的; elif [[-z“$1”]];然后是假的; elif [[“$1”=?[Ff] [Aa] [Ll] [Ss] [Ee]]];然后是假的;网络连接; }

> is_true“1”产生0,这是真的
> is_true“false”产生1,这是假的
> a = 10; is_true“$a”收益率为0
> grep -q somefile如果在某个文件中至少出现一次,则会产生0.

注意后一个例子清楚地表明你不需要这样的结构; bash中发生的一切都已经与这些基本的0/1真值一起使用了.

但我会批准你可能必须转换来自一些粗糙的外部程序的输入:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读