【问题标题】:How to check for a null value in shell [duplicate]如何在shell中检查空值[重复]
【发布时间】:2019-07-19 05:27:05
【问题描述】:

我有一个变量(它是一个字符串),它可以有两个值: (1)变量=空 (2)variable = "一些字符串值"

现在我必须应用如下条件:

如果(变量等于null)则 执行步骤 1 否则执行第 2 步。

此脚本将在 jenkins 中运行,变量的实际值将在 jenkins 脚本中替换。

但是我的变量只有两个值,要么是 null,要么是某个字符串“值”……但是当脚本运行时,它会替换这些值,所以当变量被替换时,它也会将 null 视为字符串……所以当我使用 -n它只执行 if 部分.....eg...if[-n variable -ge 1]..so 当脚本运行时...它会像这样被替换..[if -n null -ge 1] 和它返回true..它不应该..如何解决这个问题

我们如何在 shell 脚本中检查它?

【问题讨论】:

    标签: string shell if-statement


    【解决方案1】:

    利用 unix test 来检查字符串是否为空。

     [ -z $var ] && echo empty || echo non empty # -z returns true on empty string
     [ -n $var ] && echo non empty || echo empty # -n returns true on non empty string.
    

    link 或任何其他更好的站点上查找有关测试命令的模式详细信息。希望这会有所帮助。

    【讨论】:

    • 正确,但对于 OP,if 语句更易于阅读和实施。你也可以建议man test
    • 但我的变量只有两个值,要么为空,要么为某个字符串“值”...但是当脚本运行时,它会替换这些值,因此当变量被替换时,它也将 null 视为字符串......等等当我使用 -n 时,它只执行 if 部分......例如......如果 [-n 变量 -ge 1]..so 当脚本运行时......它被这样替换...... [if -n null -ge 1] 它返回 true ..它不应该 ..如何解决这个问题
    • 有一些经典的方法可以检查空字符串(不过还有其他更好的方法)。使用 [ "X${var}" = "X" ] && echo var 为空
    • @WalterA,感谢 cmets。将尝试在我的下一个机会中增加可读性和添加资源
    • 在 AIX 上,我的 ksh 脚本在测试空的 var 时出错,最好是 [ -z "$var" ]。我想知道什么对其他人来说最简单:你的符号,用关键字if 写作或用test -z "${var}"&& ... 测试详细。
    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2012-10-11
    • 1970-01-01
    • 2015-04-26
    • 2013-05-11
    相关资源
    最近更新 更多