Shell 脚本 - 没有此类文件错误

发布于 2024-11-15 08:36:06 字数 157 浏览 0 评论 0原文

#!/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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

娜些时光,永不杰束 2024-11-22 08:36:06

您应该使用$n -lt 5。 Bash 将其中的 < 读取为重定向,因此它尝试打开名为 5 的文件并将其内容提供给名为 $n

命令对我有用:

#!/bin/bash
n=0
while [ $n -lt 5 ]
do
  echo $n
  let n=$n+1
done

You should use $n -lt 5. Bash reads the < there as redirection, so it tries to open a file named 5 and feed its contents to a command named $n

This works for me:

#!/bin/bash
n=0
while [ $n -lt 5 ]
do
  echo $n
  let n=$n+1
done
墨落成白 2024-11-22 08:36:06
#!/bin/bash
n=0
while [[ "$n" < 5 ]]
do
   echo $n
   ((n++))
done
~  
#!/bin/bash
n=0
while [[ "$n" < 5 ]]
do
   echo $n
   ((n++))
done
~  
云巢 2024-11-22 08:36:06

最可移植(POSIX sh 兼容)的方式是:

#!/bin/sh -ef
n=0
while [ "$n" -lt 5 ]; do
    echo "$n"
    n=$(($n + 1))
done

注意:

  • "$n" - $n 周围的引号有助于防止因缺少操作数错误而崩溃,如果 n< /code> 未初始化。
  • [(又名test)和-lt - 是一种安全且相当可移植的方法来检查简单的算术子句。
  • $((...)) 是一种安全且可移植的算术扩展方式(即运行计算);请注意此扩展中的 $n - 虽然 bash 允许您仅使用 n,但标准且可移植的方法是使用 $n

Most portable (POSIX sh-compliant) way is:

#!/bin/sh -ef
n=0
while [ "$n" -lt 5 ]; do
    echo "$n"
    n=$(($n + 1))
done

Note:

  • "$n" - quotes around $n help against crashing with missing operand error, if n is not initialized.
  • [ (AKA test) 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 just n, the standard and portable way is to use $n.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文