从man test:
! EXPRESSION
EXPRESSION is false
Run Code Online (Sandbox Code Playgroud)
和
-n STRING
the length of STRING is nonzero
STRING equivalent to -n STRING
-z STRING
the length of STRING is zero
Run Code Online (Sandbox Code Playgroud)
因此与(上面明确指出的)[ "$x" ]具有相同的效果,并且隐式地与 具有相同的效果。那么,为什么人们会选择使用或者可以说其他形式更清晰呢?这只是个人喜好还是我错过了一个重要的区别?[ -n "$x" ][ ! "$x" ][ -z "$x" ]-n-z
我见过关于此的其他问题(例如这个问题),但没有什么可以确定它们是否在功能上相同。$x我确实想知道如果我使用-nor是否可以避免引用,-z但如果$x包含空格,则与其他方法一样会失败。
在 bash 中使用 -z 测试有优势吗?
不。
当可以说其他形式更清晰时,为什么人们会选择使用 -n 或 -z ?
因为哪种形式“更清晰”是有争议的......
当然-n, 和-z更好,因为-z和 类似“零”,并且-n类似于“非零”或“非空”,所以我更容易阅读它。[ -n "$x" ]是“如果$x非零”。我推荐*-n和-z.
难道只是个人喜好
是的。
我错过了一个重要的区别吗?
不。
[[如果您不需要 POSIX 兼容性,则更喜欢 Bash 。
我确实想知道如果我使用 -n 或 -z 是否可以避免引用 $x
不。如果您使用 ,则可以避免引用[[。我建议*无论如何都要引用每个扩展,以习惯于始终引用,以减少意外错误。
* - 这只是一个建议,而不是限制。如果您向我发送带有[ ! "$x" ]或 的代码[[ $x ]],我将不会眨眼两次。但如果你送来[ $x ]烟,我的耳朵就会冒出来。
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |