#!/bin/bash
local dept=0
while [ $n < 5 ]
do
echo $n
$n++
done
此代码返回错误7: cannot open 5: No such file
我应该在哪里改变?
答案 0 :(得分:6)
您应该使用$n -lt 5
。 Bash将<
作为重定向读取,因此它会尝试打开名为5
的文件并将其内容提供给名为$n
的命令
这对我有用:
#!/bin/bash
n=0
while [ $n -lt 5 ]
do
echo $n
let n=$n+1
done
答案 1 :(得分:1)
#!/bin/bash
n=0
while [[ "$n" < 5 ]]
do
echo $n
((n++))
done
~
答案 2 :(得分:1)
大多数便携式(POSIX sh兼容)方式是:
#!/bin/sh -ef
n=0
while [ "$n" -lt 5 ]; do
echo "$n"
n=$(($n + 1))
done
注意:
"$n"
- 如果$n
未初始化,n
周围的引号有助于防止丢失操作数错误。[
(AKA test
)和-lt
- 是一种安全且相当便于检查简单算术子句的方法。$((...))
是一种安全便携的算术扩展方式(即运行计算);请注意此扩展中的$n
- 虽然bash允许您仅使用n
,但标准且可移植的方式是使用$n
。