例如,我想用逗号分隔“一,二,三”作为分隔符,并使用循环分别处理结果三个子字符串。
答案 0 :(得分:9)
比当前提供的更简单的解决方案涉及使用内置替换修改器 - 在这种情况下没有必要或理由浪费地使用循环或外部命令替换:
set list = one,two,three
set split = ($list:as/,/ /)
echo $split[2] # returns two
()创建一个列表,:s是替换修饰符,并且:as根据需要重复多次。
此外,t / csh不需要引用裸字符串,也不需要强制求值的变量。
答案 1 :(得分: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
答案 2 :(得分:1)
set list = one,two,three
foreach i ( $list:as/,/ / )
echo $i
end