bash - 如何在 bash 中使用 while 循环

标签 bash

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

问题:什么时候变量必须是文件或目录?
如何解决?

编辑:如果我想循环 while i < $1 + $2,当 $1 和 $2 是数字时,如何写>

最佳答案

您需要一个算术语句(两个括号),而不是子 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

关于bash - 如何在 bash 中使用 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32207604/

相关文章:

bash - [[ ${variable} ]] 与 bash 中的 [[ -n ${variable} ]] 相同吗?

macos - 使用 Mac 上的 iTerm2,如何从命令行上的光标删除向前的单词?

ruby - 中间人问我是否要在开始新项目时使用 compass

正则表达式(或 bash),获取引号之间的管道(perl)

linux - Bash 变量始终为空

python - pygsheets 上次访问或上次修改时间戳

bash - 如何在 bash 中拆分由/分隔的字符串

linux - 带有 mv 的意外标记 `(' 附近出现语法错误!(构建)

linux - 在 bash 命令中调用自定义函数

c - 使用system()执行BASH脚本输出: source: not found