我正在研究shell scripting并且不了解-eq和==,-lt和<,-gt和>之间的区别,等等。

我正在尝试从0到9编写一个while循环printing

num=0
while [ $num -lt 10 ]; do
   echo "$num"
   ((num++))
done

这段代码有效但当我将-lt更改为<时,它表示没有这样的文件或目录。

num=0
while [ $num < 10 ]; do
   echo "$num"
   ((num++))
done

<这里有什么问题?我是否总是在while循环中使用go for -lt?循环时有一般的方法吗?感谢您是否可以提供帮助。

分析解答

在语法方面,Shell scripting总是不同的。

所以当你说-lt时它意味着小于(<)。所以当你编写你的代码时它完全正常

while [ $num -lt 10 ]; do
   echo "$num"
   ((num++))
done

但是当你在shell脚本中使用<时,它用于从文件或目录中读取输入。所以在这种情况下,它将搜索$num变量中的文件名

In simple words

  1. -lt小于用于条件检查的-lt

  2. <用于从文件中读取输入。