2011-10-12 208 views

回答

5

例如:

set s = "one,two,three" 
set words = `echo $s:q | sed 's/,/ /g'` 
foreach word ($words:q) 
    echo $word:q 
end 

但考慮CSH是否爲你做什麼工作的工具:

http://www.bmsc.washington.edu/people/merritt/text/cshbad.txt

+0

謝謝。什麼:q是什麼意思? – zzhang

+0

它引用變量; '$ s:q'類似於'「$ s」'。這個例子不需要,但可能在其他情況下(比如說,在數據中有空白的地方)。 –

7

比呈現當前一個簡單的解決方案包括使用內置替代修改器 - 在這種情況下,沒有必要或無理由浪費地使用循環或外部命令替換:

set list = one,two,three 
set split = ($list:as/,/ /) 

echo $split[2] # returns two 

()創建一個列表,其中:s是替換修飾符,並且:根據需要重複次數多次。

此外,t/csh不需要引用裸字符串,也不需要不需要強制評估的變量。

1
set list = one,two,three 
foreach i ($list:as/,/ /) 
    echo $i 
end