【发布时间】:2021-10-01 17:44:14
【问题描述】:
我试图理解为什么我的 for 循环会打印除第一个以外的所有结果:
*#!/bin/bash
#python deploy/bulk.py
countOuter=0
countInner=0
END=23
for bool in $(seq ${1} $END)#$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} ${16} ${17} ${18} ${19} ${20} ${21} ${22} ${23}
do
countOuter=$((countOuter+1))*
我的输出开始于: ----------------------------------------------- -------- 平等>> 平等------------------------------- ------------------ -------------------------------------------------- ----- 工作 1000000bet.com 已建成 ---------------------------------------- ------------------------------
如果我不使用这个 $(seq ${1} $END) 而只是 $1 $2 $3 $4 $5 $6 $7 $8 $9....,它有效。
【问题讨论】:
-
请查看How do I ask a good question?,然后相应地更新问题;特别是...
seq ${1} $END与$1 $2 $3 ... $23不一样;请使用$1到$23的内容、完整的代码集和完整的输出集更新问题(出于可读性目的,也将格式应用于输出) -
我不确定这里发生了什么(或者您期望发生什么),但我认为您可能对
$( )的作用感到困惑。 -
我不能把整个代码,因为有太多的敏感信息。我会尽力解释。有一个 Jenkinsfile 将 true/false 传递给我的 script.sh 文件。我正在使用这些值来确定是否要触发批量作业。
-
在最后几分钟玩了一段时间后,我意识到这根本不起作用。即使 END=5,它也会继续遍历所有 23 个对象。以愚蠢的方式使用这些值是没有问题的,但在 for 循环中很难实现 range 有点奇怪:)
-
如果你想要一个简单的范围,那么
seq $END就足够了。你可以使用格式选项来附加$这样seq -f "$%g" $END但它不会工作