gog*_*sca 6 osx shell shell-script brace-expansion
我需要在我的 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
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我总是得到:
execute_function 10
Launching 10 jobs
Launching Job: XX9BWC
{1..10}
Run Code Online (Sandbox Code Playgroud)
如果我替换:$1与$number_of_jobs或"${number_of_jobs}"
您的脚本是为编写的,zsh但您正在使用bash.
bash 不支持在括号扩展中使用变量作为范围。
要解决这个问题,只需安排在zshshell 中执行脚本或函数(特别是如果脚本比您显示的要长并且正在使用其他zsh功能)。默认情况下,此 shell 在 macOS 上安装为/bin/zsh. 您可以#!/bin/zsh在脚本的第一行添加以使其zsh默认执行。
也可以看看:
这里的问题是大括号扩展中的变量。
尝试将其重写为
for ((i=1;i<=$1;i++))
do
#your code here
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2262 次 |
| 最近记录: |