簡體   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