【发布时间】:2011-12-05 19:35:24
【问题描述】:
例如,我想用逗号分隔“一、二、三”,并使用循环分别处理生成的三个子字符串。
【问题讨论】:
标签: csh
例如,我想用逗号分隔“一、二、三”,并使用循环分别处理生成的三个子字符串。
【问题讨论】:
标签: csh
例如:
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
【讨论】:
$s:q 类似于 "$s"。此示例不需要它,但在其他情况下可能需要它(例如,数据中有空格)。
一个比当前解决方案更简单的解决方案是使用内置替换修饰符——在这种情况下没有必要或没有理由浪费地使用循环或外部命令替换:
set list = one,two,three
set split = ($list:as/,/ /)
echo $split[2] # returns two
() 创建一个列表, :s 是替换修饰符, :as 根据需要多次重复替换。
此外,t/csh 不需要引用裸字符串,也不需要强制评估的变量。
【讨论】:
set list = one,two,three
foreach i ( $list:as/,/ / )
echo $i
end
【讨论】: