Bash - 如何做一个普通的计数器?

Nor*_*tfi 0 shell bash

所以我习惯做我所说的(不确定是否是正式名称)“计数器”,并且基本上执行涉及特定范围或数字的任务:

#!/bin/bash -x
get_total2=$(echo "$@")
while [ $get_total2 -gt 0 ]; do
    echo $get_total2
    get_total2=$(expr $get_total2 - 1)
done
Run Code Online (Sandbox Code Playgroud)

使用示例echo

但正如代码所示,它不是一个“正常”计数器(如按正常顺序),而是一个相反的计数器......我从来不知道如何做到这一点,尽管我确信这很容易,而且我'我只是想太多了。

我怎样才能使上面的代码以“正常”计数而不是相反的顺序工作?

And*_*ton 5

您可以for在 bash 中使用循环来计数。例如考虑:

#!/bin/bash -x

total="${1}"

for ((i = 0; i < total; ++i)); do
    echo "${i}"
done
Run Code Online (Sandbox Code Playgroud)

如果我运行它,那么我会得到:

$ ./ex.sh 3
0
1
2
$
Run Code Online (Sandbox Code Playgroud)

for循环的结构如下:

for ((init; condition; update))
Run Code Online (Sandbox Code Playgroud)
  • init部分在循环开始之前运行一次,用于初始化变量。
  • condition每次循环时都会评估该部分。当条件变为 时false,循环停止
  • update每次通过循环后都会评估 该部分。++i是一个简写形式i = i + 1

在这种情况下,您将通过循环获得以下步骤序列

  • i = 0
  • 0 < 3-> 正确
  • echo 0
  • ++i( i = i + 1) # i 变为 1
  • 1 < 3-> 正确
  • echo 1
  • ++i( i = i + 1) # i 变成 2
  • '2 < 3` -> 真
  • echo 2
  • ++i( i = i + 1) # i 变成 3
  • 3 < 3-> false # 循环终止