如何在bash中使用while循环

问题描述 投票:0回答:2

bash 新手 我试图编写简单的 while 循环:

let i = $1
while(i < 4); do
   echo Hi
   ((i++))
   done

运行此命令:

$ bash bash_file.sh 0

给了我这个警告
bash_file.sh line 2: 4: no such file or directory

问题:从什么时候起变量必须是文件或目录?
怎么解决这个问题?

编辑:如果我想循环,而我< $1 + $2, when $1 and $2 are numbers, how to write it>

bash
2个回答
5
投票

您需要一个算术语句(两个括号),而不是子shell。

let
这里是不必要的。

i=$1
while (( i < 4 )); do
...
done

while
的参数是一个shell命令。
( i < 4 )
启动一个运行命令
i
的子 shell,从名为
4
的文件中读取输入。重定向是在查找命令之前处理的,这解释了为什么您没有收到
i: command not found
错误。

您只需将

4
替换为您要使用的表达式即可:

while (( i < $1 + $2 )); do

© www.soinside.com 2019 - 2024. All rights reserved.