我需要在 macOS 终端中执行以下 shell 脚本。循环执行的次数绝不会超过其第一次迭代。
function execute_function() {
# Launch job
number_of_jobs=$1
echo "Launching ${number_of_jobs} jobs"
for i in {1..$1}; do
job_id=`head /dev/urandom | tr -dc A-Z0-9 | head -c 6 ; echo ''`
echo "Launching Job: $job_id"
echo $i
done
}
当我运行它时,我总是得到:
execute_function 10
Launching 10 jobs
Launching Job: XX9BWC
{1..10}
$1
如果我用$number_of_jobs
or替换:也会发生同样的情况"${number_of_jobs}"
答案1
您的脚本是为 编写的,zsh
但您正在使用bash
.
bash
不支持在括号扩展中使用变量作为范围。
要解决此问题,只需安排在 shell 中执行脚本或函数zsh
(特别是如果脚本比您显示的脚本长并且正在使用其他zsh
功能)。默认情况下,此 shell 在 macOS 上安装为/bin/zsh
.您可以添加#!/bin/zsh
为脚本中的第一行,以使其zsh
默认执行。
也可以看看:
答案2
这里的问题是大括号扩展中的变量。
尝试将其重写为
for ((i=1;i<=$1;i++))
do
#your code here
done