【问题标题】:Checking for null string in bash在 bash 中检查空字符串
【发布时间】:2011-07-12 14:11:11
【问题描述】:

以下测试有什么区别吗?

[[ "$STRING" = "" ]] && exit 1;


[[ "x$STRING" = "x" ]] && exit 1;


[[ -z $STRING ]] && exit 1;

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    不,它们都是一样的。但是要养成几个防御习惯。

    • 您也应该在 -z 之一中引用 $STRING
    • 如果您使用 -u 选项运行(我总是这样做),那么您应该将可能的可选变量引用为 ${STRING-},以防万一它根本没有设置

    【讨论】:

    • 在使用 [[ 关键字时,为什么要引用 $STRING
    【解决方案2】:

    显然,它们都做同样的事情,即检查给定字符串是否为“空”,除了第一个检查 $string 是否为空,第二个检查 x 加 $string 是否等于 x,最后, -z 检查长度。 就我个人而言,我更倾向于使用 -z 更可靠的选项。

    【讨论】:

    • 您不需要在 -z 中引用 $string,在第一个示例中也是如此,特别是如果您知道 $string 将包含一个字符串。
    • 引用字符串是一个好习惯,如果您进行更复杂的测试,例如:[[ -z "$STRING" && -z "$OTHER" ]]
    猜你喜欢
    • 2010-12-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    相关资源
    最近更新 更多