将行的一部分设置为变量csh

时间:2015-11-18 10:35:06

标签: text input csh

我刚刚开始在csh编程,我遇到了一个具体的问题。

我有一个外部输入文件,其结构为:

[division]

    [[subdivision1]]

        vara = value1
        varb = value2

    [[subdivision2]]

        anothername = value3

我想提取值" value1"," value2"等,并将它们设置为此格式的变量。我知道如何读取行,但不知道如何指定我想要的变量只是" valuei",在" ="之后,而不是整行本身。

编辑补充一点,我知道我可以逐行阅读,然后按分隔符分割,但我想知道是否有更清洁的方法。

我怎么能这样做?

由于

1 个答案:

答案 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如何分割您的单词。因此,如果您的值包含空格,那么您无法做到这一点。