【问题标题】:Set part of a line as variable csh将行的一部分设置为变量 csh
【发布时间】:2015-11-18 10:35:05
【问题描述】:

我刚刚开始使用 csh 编程,但遇到了一个特定问题。

我有一个结构如下的外部输入文件:

[division]

    [[subdivision1]]

        vara = value1
        varb = value2

    [[subdivision2]]

        anothername = value3

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

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

我该怎么做?

谢谢

【问题讨论】:

  • 这是我开始推荐“真正的”编程语言的地方,例如 Python、Ruby 等。尤其是 csh,有很多难以解决的怪癖和烦恼。

标签: text input csh


【解决方案1】:

foreach 在单词列表上是最惯用的 csh 循环方式,这可以发挥优势。下面展示了如何使用它,其中包含一些状态来检查我们何时找到标记 var、= 和 value。

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如何拆分你的单词。因此,如果您的值包含空格,则您无能为力。

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2012-06-06
    • 2019-06-24
    • 1970-01-01
    • 2019-02-05
    • 2014-01-18
    • 1970-01-01
    • 2011-06-27
    • 2020-03-06
    相关资源
    最近更新 更多