简单的 bash while 循环创建了一个名为 0 的不需要的文件

Leo*_*mon 2 bash

出于某种莫名其妙的原因,当我运行以下代码(显然是最小化)时,会创建一个名为“0”的文件。有人可以解释为什么会发生这种情况,以及如何避免它?非常感谢

#!/bin/bash
while [ 1 > 0 ] 
    do
        exit
    done
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 9

> 0重定向到一个名为0. 注意> something或类似的语法不必放在最后。即使重定向的命令没有意义,也会创建该文件。在您的情况下,该命令在[ 1 ]语法上是有效的:它检查是否1为非空字符串。

你可能的意思是[ 1 -gt 0 ]. 见help [help test | less

  • @Jim 虽然它在语法上是合法的,但它是一个 *string* 比较,即词法顺序的测试(例如,尝试 `[[ 2 > 11 ]]`) - 所以与 `-gt ` 不同。 (3认同)