我正在研究shell脚本,不了解-eq
和==
,-lt
和<
,-gt
和{{1 }},依此类推。
我正在尝试编写从0到9的while循环打印
>
此代码有效,但是当我将num=0
while [ $num -lt 10 ]; do
echo "$num"
((num++))
done
更改为-lt
时,它说没有这样的文件或目录。
<
这里num=0
while [ $num < 10 ]; do
echo "$num"
((num++))
done
有什么问题?我是否总是需要在while循环中使用<
?有没有一般的方法来做while循环?感谢您能提供帮助。
答案 0 :(得分:4)
Shell脚本在语法方面一直不同。
因此,当您说-lt
时,它的含义小于(<)。因此,当您编写代码时,它可以很好地工作
while [ $num -lt 10 ]; do
echo "$num"
((num++))
done
但是在外壳程序脚本中使用<
时,它用于从文件或目录读取输入。因此,根据您的情况,它将在$num
变量
简单地说
-lt
小于用于条件检查的
<
用于读取文件中的输入。
答案 1 :(得分:2)
在命令行中 << / strong>表示从文件读取输入
例如
grep“我的名字”
此外, > 将输出重定向到文件
例如 ls> lists.txt
在执行 $ num <10 时 它会检查名为10的文件
答案 2 :(得分:0)
命令[
指定-lt
用于比较两个整数。期望<
做任何有用的事情只是一厢情愿。
巧合的是,字符<
是用于input redirection的bash元字符。您收到的错误是由于cwd中不存在文件10
。
答案 3 :(得分:0)
您可以在双括号(整数)或大括号(字符串)中使用“ <”
num=0
while (( $num < 10 )); do
echo "$num"
((num++))
done
以及字符串
str="a"
while [[ $str < "aaaaa" ]]; do
echo "$str"
str+="a"
done