Bash Shell脚本测试
我想更新别人写的bash脚本,但我遇到了一行我不确定的代码 有人能告诉我以下支票的用途吗:Bash Shell脚本测试,bash,shell,command-line,Bash,Shell,Command Line,我想更新别人写的bash脚本,但我遇到了一行我不确定的代码 有人能告诉我以下支票的用途吗: if [ :$RESULT != :0,0 ] 我假设它正在检查$RESULT中的某个值,可能有一个子字符串 感谢您的帮助 我认为:是人们在变量为空时常用的技巧 如果为空,则外壳将具有以下内容: if [ != 0,0 ] 这将是一个语法错误。将:放在前面意味着如果变量为空,则shell具有以下内容: if [ : != :0,0 ] 这不是语法错误,并且会(正确地)报告false。[命令只是命令
if [ :$RESULT != :0,0 ]
我假设它正在检查$RESULT中的某个值,可能有一个子字符串
感谢您的帮助 我认为
:
是人们在变量为空时常用的技巧
如果为空,则外壳将具有以下内容:
if [ != 0,0 ]
这将是一个语法错误。将:
放在前面意味着如果变量为空,则shell具有以下内容:
if [ : != :0,0 ]
这不是语法错误,并且会(正确地)报告false。
[
命令只是命令test的别名,结束方括号只是sytax sugar(如果是结束方括号,则该命令将忽略最后一个参数),因此该行实际读取
if test :$RESULT != :0,0
它比较字符串:$RESULT
是否等于字符串:0,0
。冒号在变量$RESULT
为空的情况下加上前缀。如果省略冒号且$RESULT
为空字符串,则该行如下所示:
if test != 0,0
if test "$RESULT" != 0,0
# Will become
if test "" != 0,0
这将导致错误,因为test
要求在!=
之前有一个参数。另一种方法是使用引号表示存在一个参数,该参数是空字符串:
if test != 0,0
if test "$RESULT" != 0,0
# Will become
if test "" != 0,0
不过,您发布的变体更便于携带。有时您会看到一个
x
,其使用方式与示例中冒号的使用方式相同
在Bash中进行此类测试的首选方法是使用双方括号:
if [[ $RESULT != 0,0 ]]
双括号形式允许更大的灵活性、更好的可读性、减少转义和引用的需要以及更多的一些功能。有关更多信息,请参阅
如果要测试数值,而不是字符串或文件,请使用双括号:
if (( 3 + 4 > 6 ))
请尝试
manbash
并搜索内置命令test
以获取更多信息好的,我遵循这一点,谢谢!那么它实际上是在与字符串“0,0”进行比较吗?我只是问,因为变量结果永远不会有那个值!我想知道0,0是否还有其他作用。可能是一个空白字符串?不,0,0
是一个字符串,运算符!=
比较字符串,所以它会检查$result
是否是字符串0,0
。尝试人工测试
。只做了一些小测试,你就成功了的确,完全正确。谢谢!