2016-01-29 67 views
0

在csh或任何其他mac友好腳本語言中,我想運行某種形式的循環讀取2個列表。需要一些幫助的語法。bash csh通過2列表循環

例如:

variable1 = (1, 2, 3, 4, ...) 
variable2 = (one, two, three, four, ...) 

Foreach number ($variable1) 

echo "{$variable1} equals {$variable2}" 

end 

當我嘗試,第二variable2不是在循環中的認可。

+1

的bash和csh是** **完全不同的炮彈。詢問其中一方,而不是同時詢問。 –

+0

(作爲一個例子,爲什麼實際上有多個問題嵌入的「問題」在這裏被忽略 - 現在你有一個bash答案和一個csh答案;每個答案都是單獨正確的,但這意味着你不能選擇一個「接受」回答你的問題!) –

+1

Aside:http://web.mit.edu/ghudson/info/csh.whynot; http://www.grymoire.com/unix/CshTop10.txt –

回答

2
#!/bin/bash 

variable1=(1 2 3 4) 
variable2=(one two three four) 

for ((i=0;i<${#variable1[@]};i++)); do 
    echo "${variable1[$i]} equals ${variable2[$i]}" 
done 

輸出:

 
1 equals one 
2 equals two 
3 equals three 
4 equals four 
+0

在這種情況下,這是可行的,因爲變量1是一個索引列表,但它在比較兩個數組項目'variable1 =( alpha bravo charlie delta)''variable2 =(alpha beta gamma delta)' –

+0

@JohnHascall:謝謝。我已經更新了我的答案。 – Cyrus

1

請試試這個:

#! /bin/csh 
set variable1 = (1 2 3 4) 
set variable2 = (one two three four) 
set i = 1 
foreach x ($variable1) 
    echo "$x equals $variable2[$i]" 
    @ i = $i + 1 
end 

結果是:

1 equals one 
2 equals two 
3 equals three 
4 equals four 
+1

你不需要echo,比如:'foreach x(\'echo $ variable1 \')'。這同樣適用於'foreach x($ variable1)' –

+0

@JohnHascall,剛剛更新。謝謝。 – Quinn