我想更新一个别人写的bash脚本,而且我遇到了一条我不确定的问题.
谁能告诉我以下检查的作用:
if [ :$RESULT != :0,0 ]
Run Code Online (Sandbox Code Playgroud)
我假设它在$ RESULT中检查一些值,可能有一个子串?
任何帮助赞赏!
sou*_*rge 12
该命令[
只是命令的别名,test
右边的方括号只是sytax sugar([
如果它是一个右括号,命令会忽略最后一个参数),所以该行实际读取
if test :$RESULT != :0,0
Run Code Online (Sandbox Code Playgroud)
它比较字符串是否:$RESULT
等于字符串:0,0
.对于变量$RESULT
为空的情况,前缀为冒号.如果省略冒号并且$RESULT
是空字符串,则该行将如下所示:
if test != 0,0
Run Code Online (Sandbox Code Playgroud)
这会导致错误,因为test
之前需要一个参数!=
.另一种方法是使用引号来表示存在一个参数,这是一个空字符串:
if test "$RESULT" != 0,0
# Will become
if test "" != 0,0
Run Code Online (Sandbox Code Playgroud)
但是,您发布的变体更具便携性.
我认为这:
是人们在变量为空的情况下使用的常见技巧.
如果它是空的,那么shell将具有:
if [ != 0,0 ]
Run Code Online (Sandbox Code Playgroud)
这将是一个语法错误.把:
在前面意味着如果该变量是空的外壳具有这样的:
if [ : != :0,0 ]
Run Code Online (Sandbox Code Playgroud)
这不是语法错误,并且会(正确地)报告错误.
归档时间: |
|
查看次数: |
2038 次 |
最近记录: |