Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在bash中检查空字符串_Linux_Bash - Fatal编程技术网

Linux 在bash中检查空字符串

Linux 在bash中检查空字符串,linux,bash,Linux,Bash,以下测试之间有什么区别吗 [[ "$STRING" = "" ]] && exit 1; [[ "x$STRING" = "x" ]] && exit 1; [[ -z $STRING ]] && exit 1; 不,它们都一样。但是要养成一些防御性的习惯 您还应该在-z中引用$STRING 如果您使用-u选项运行(我总是这样),那么您应该将可能的可选变量引用为${STRING-},以防根本没有设置它 显然,它们都做相同的事情,即检查给

以下测试之间有什么区别吗

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


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


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

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

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

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

在-z中不需要引用$string,在第一个示例中,特别是如果您知道$string将包含一个字符串的话。引用字符串是一个好习惯,如果您进行更复杂的测试,例如:
[-z“$string”&&-z“$OTHER”]]
。为什么在使用
[
关键字时要引用
$STRING