繁体   English   中英

在Bash中,如何遍历值的向量?

[英]In Bash, how to loop over a vector of values?

我目前有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脚本中对此进行编程? 谢谢。

您想要实现的目标应该可以通过数组实现

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html

然后在2D矩阵中声明您的方案并在其上循环

如何在bash中声明2D数组

这里有一些想法...


进入循环

line=1
while read var1 var2 var3; do
   echo $line: $var1, $var2, $var3
   ((line+=1))
done <<EOF
T T T
T T F
F T F
F F T
F F F
EOF

输出量

1: T, T, T
2: T, T, F
3: F, T, F
4: F, F, T
5: F, F, F

进入循环

line=1
cat <<EOF |
T T T
T T F
F T F
F F T
F F F
EOF

while read var1 var2 var3; do
   echo $line: $var1, $var2, $var3
   ((line+=1))
done

输出量

1: T, T, T
2: T, T, F
3: F, T, F
4: F, F, T
5: F, F, F

使用功能

func(){
   var1=$1; var2=$2; var3=$3
   echo $var1, $var2, $var3
}

func 1 1 1
func 1 1 0
func 0 1 0
func 0 0 1
func 0 0 0

输出量

1, 1, 1
1, 1, 0
0, 1, 0
0, 0, 1
0, 0, 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM