2011-10-12 149 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