2016-10-03 55 views
2

是否有任何具體的方法來檢查for循環的條件是否爲true並返回true。 前 -如果所有條件成功,bash中如何返回true?

`

check_all_1_to_8_eq() 
{ 
for i in {1..8}; do 
     if [ a == $i ];then 
      return 0 
     else 
      return 1 
     fi 
done 
}` 

我想,以檢查是否所有1至8返回true,則函數返回的結束真要是對的,如果條件返回false,那麼函數返回false。請讓我知道如何解決這些類型的腳本。

+0

還要注意的是'爲我在{1..8}'case'[a == $ i]'中總會是錯誤的。但我認爲'a'是一個佔位符,它將被類似'$ a'的東西取代... – anishsane

回答

3

如果條件成功,則繼續循環,並在循環外部繼續循環,並且return。如果條件不滿足,return在該點:

check_all_1_to_8_eq() { 
    for i in {1..8}; do 
     if [ ! a == "$i" ]; then 
      return 1 
     fi 
    done 
    return 0 
} 

[ ! a == "$i" ]檢查的可變i$i)值是等於a


您可以利用短路評價,||(運行命令後它只有在前面的命令失敗)也是如此,在這裏我們將做股權檢查[ a == "$i" ]

check_all_1_to_8_eq() { 
    for i in {1..8}; do 
     [ a == "$i" ] || return 1 
    done 
    return 0 
}