如何在bash的for循环中将输入参数转换为整数值?

Ass*_*viz 4 bash shell-script for variable

在我的 bash 脚本中,我尝试使用一个数字作为输入变量fora for 循环我将脚本运行为

./script.sh InputFolder/ Number_of_iterations
Run Code Online (Sandbox Code Playgroud)

脚本应该在给定的文件夹内工作,并运行一个 for 循环,次数与Number_of_iterations变量设置的次数相同。但不知何故,我无法将变量设置为整数。

这是我在脚本中的循环示例:

for i in {1..$(($2))}
do
 echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)

我已经尝试过双括号$(($...))选项以及双引号"...",但我一直得到的输出是

Welcome {1..5} times
Run Code Online (Sandbox Code Playgroud)

这让我觉得,这不是一个整数。如果您能将输入参数作为整数读入脚本,我将不胜感激。

Ram*_*pal 5

您可以通过两种方式执行此操作:

使用与 ksh93 兼容的 shell(ksh93、zsh、bash):

for (( i=1;i=<$2;i++ ))
do
 echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)

这里我们将 i 设置为 1 并循环,递增它直到它小于或等于 $2

使用 GNU 系统上的 POSIX shell:

for i in $(seq "$2")
do
 echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)

seq命令(特定于GNU)将在单独的行中输出从 1 到 $2 中指定的数字的数字。假设您没有修改$IFS(默认情况下包含行分隔符),命令替换会将其拆分为多个元素以for供循环。