【发布时间】:2018-06-21 05:57:13
【问题描述】:
我目前有 3 个变量设置为 true 或 false。我有 5 个这样的场景:
var1 = T; var2 = T; var3 = T
var1 = T; var2 = T; var3 = F
var1 = F; var2 = T; var3 = F
var1 = F; var2 = F; var3 = T
var1 = F; var2 = F; var3 = F
我想在我的 bash 脚本中创建一个循环,该循环能够遍历上述 5 个场景并相应地设置变量。有没有办法将所有内容放在类似矩阵的数组中并调用它们?如果我这样做:
for var1 in T F; do for var2 in T F; do for var3 in T F; do
# execute whatever here.....
done
done
done
这显然超出了我的要求,如果我将其扩展到许多变量和许多场景,它变得不可行。总之,我希望为每个循环设置三个变量,其中包含 5 个场景中的每个场景中的值。有没有办法在 bash 脚本中对此进行编程?谢谢。
【问题讨论】:
-
由于三个变量中只有五个“场景”,而不是通常情况下的全部八个,因此必须有一些关于这些“场景”和可能组合的特殊规则。您需要先说明这些规则才能开始。
-
您通常会看到使用 3 索引数组完成此操作。例如。
var1=(T T F F F); var2=(T T T F F); var3=(T F F T F);然后使用 C 样式循环for ((i = 0; i < ${#var1[@]}; i++)); do if [ "${var1[i]}" = 'T' ] && [ "${var2[i]}" = 'T' ] && [ "${var3[i]}" = 'T' ]; then .... elif ....fi; done或者您可以使用case语句来检查值。通过为每个使用索引数组,您可以协调检查每个数组中的每条记录,例如所有0元素,然后所有1元素,等等...(您还可以包括检查以确保每个数组/向量具有相同数量的元素) -
写一个函数
f()然后做f 1 1 1然后f 1 1 0等等