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-}
就我个人而言,我更倾向于使用-z,因为它更可靠。在-z中不需要引用$string,在第一个示例中,特别是如果您知道$string将包含一个字符串的话。引用字符串是一个好习惯,如果您进行更复杂的测试,例如:
[-z“$string”&&-z“$OTHER”]]
。为什么在使用[
关键字时要引用$STRING
?