我刚刚开始在csh编程,我遇到了一个具体的问题。
我有一个外部输入文件,其结构为:
[division]
[[subdivision1]]
vara = value1
varb = value2
[[subdivision2]]
anothername = value3
我想提取值" value1"," value2"等,并将它们设置为此格式的变量。我知道如何读取行,但不知道如何指定我想要的变量只是" valuei",在" ="之后,而不是整行本身。
编辑补充一点,我知道我可以逐行阅读,然后按分隔符分割,但我想知道是否有更清洁的方法。
我怎么能这样做?
由于
答案 0 :(得分:0)
foreach
是循环的最惯用的csh方式,这可以用来获益。下面显示了如何使用它,包含一些状态来检查我们何时找到了令牌 var , = 和值。
set prev =
foreach word (`cat data`)
if ( "$prev" == "=" ) then
echo "found var $var = $word"
endif
set var = "$prev"
set prev = "$word"
end
将产生
found var vara = value1
found var varb = value2
found var anothername = value3
相当干净。缺点是您无法选择csh
如何分割您的单词。因此,如果您的值包含空格,那么您无法做到这一点。