Shell 脚本 - 没有此类文件错误
#!/bin/bash
local dept=0
while [ $n < 5 ]
do
echo $n
$n++
done
此代码返回错误 7: 无法打开 5: No such file
我应该在哪里改变?
#!/bin/bash
local dept=0
while [ $n < 5 ]
do
echo $n
$n++
done
this code returns error 7: cannot open 5: No such file
Where should I change?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该使用
$n -lt 5
。 Bash 将其中的<
读取为重定向,因此它尝试打开名为5
的文件并将其内容提供给名为$n
的命令对我有用:
You should use
$n -lt 5
. Bash reads the<
there as redirection, so it tries to open a file named5
and feed its contents to a command named$n
This works for me:
最可移植(POSIX sh 兼容)的方式是:
注意:
"$n"
-$n
周围的引号有助于防止因缺少操作数错误而崩溃,如果n< /code> 未初始化。
[
(又名test
)和-lt
- 是一种安全且相当可移植的方法来检查简单的算术子句。$((...))
是一种安全且可移植的算术扩展方式(即运行计算);请注意此扩展中的$n
- 虽然 bash 允许您仅使用n
,但标准且可移植的方法是使用$n
。Most portable (POSIX sh-compliant) way is:
Note:
"$n"
- quotes around$n
help against crashing with missing operand error, ifn
is not initialized.[
(AKAtest
) and-lt
- is a safe and fairly portable way to check for simple arithmetic clauses.$((...))
is a safe and portable way to do arithmetic expansion (i.e. running calculations); note$n
inside this expansion - while bash would allow you to use justn
, the standard and portable way is to use$n
.