所以我习惯做我所说的(不确定是否是正式名称)“计数器”,并且基本上执行涉及特定范围或数字的任务:
#!/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。
但正如代码所示,它不是一个“正常”计数器(如按正常顺序),而是一个相反的计数器......我从来不知道如何做到这一点,尽管我确信这很容易,而且我'我只是想太多了。
我怎样才能使上面的代码以“正常”计数而不是相反的顺序工作?
您可以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 = 00 < 3-> 正确echo 0++i( i = i + 1) # i 变为 11 < 3-> 正确echo 1++i( i = i + 1) # i 变成 2echo 2++i( i = i + 1) # i 变成 33 < 3-> false # 循环终止