2012-07-25 346 views
0

我見過很多與彼此相關的多個條件的例子,但是有兩個不同的無關條件,其中第二個只在第一個條件爲真時纔會發生。 如何獲得以下良好的組織和1行?ASH if if語句中的if語句

funtion1 
if [[ $valueX == 2 ]]; then 
    funtion2 
    if [[ $valueY -gt 16 ]]; then 
     sleep $valueZ 
    fi 
fi 
+0

你的問題時帶上「慶典」和「灰」,兩種不同的炮彈。 '[[''語法特定於bash;灰不支持它。 – 2012-08-03 23:25:23

回答

0

你可以很好地組織它,或者你可以把它放在一行中。

我想說你現在擁有的東西已經很好地組織了。我不認爲有任何方法可以在不減少清晰度的情況下以更少的行數進行重組。

簡單地通過連接線和添加(如果funtion2都沒有了,你可以結合這兩個條件。)

如果硬要將是對逐行代碼整個塊,你可以做到這一點分號,像這樣:

funtion1 ; if [[ $valueX == 2 ]]; then funtion2 ; if [[ $valueY -gt 16 ]]; then sleep $valueZ ; fi ; fi 

但正如我所說,我不認爲任何人會稱之爲「很好地組織」;閱讀和維護比原來的多行很好的縮進版更難。

請注意,[[語法特定於; 不支持它。

(哦,你拼錯的「功能」。)

+0

好的,謝謝,我有20個這樣一個接一個,數字可能會變得更緊湊..但是不要猜測:) – Nixx 2012-07-25 21:05:05

+0

@Nixx:如果條件之間存在某種一致的關係,您仍然可以重新組織代碼。 – 2012-07-25 21:22:28

+0

mhm,不確定,只有function2和valueX對於所有20都是相等的。其他元素是不同的(儘管按順序編號) – Nixx 2012-07-25 22:00:02