【问题标题】:grep and variable assignment in cshcsh中的grep和变量赋值
【发布时间】:2017-10-25 15:10:29
【问题描述】:

我正在尝试使用从 grep 和 awk 获得的值分配一个变量。像下面的东西。谁能帮我正确的语法?

下面是我试图获取文件完整路径的 sn-p:

set name='egrep -i "vars\(design\)" foo.tcl' | 'awk '{print $3}''
set dir = $cwd
set fulldir = $dir/$name

【问题讨论】:

  • 试试name=`awk '/vars\(design\)/{print $3}' IGNORECASE=1 foo.tcl`
  • 感谢 Sundeep!那行得通。

标签: awk grep csh


【解决方案1】:

您需要使用反引号来扩展命令,而不是单引号。另外,你好像添加了一大堆随机的's?

这应该可行:

set name = `egrep -i "vars\(design\)" foo.tcl | awk '{print $3}'`

话虽如此,您实际上并不“需要”在这里使用grep,您只能使用awk:

set name = `awk '/vars\(design\)/{print $3}' IGNORECASE=1 foo.tcl`

// 之间的部分选择行(就像 grep)。


您可能还想考虑在其他两个set 命令中添加引号:

set dir = "$cwd"
set fulldir = "$dir/$name"

这里不太可能发生这种情况,但是如果没有引号,如果 $dir$name 包含空格或其他特殊的 shell 字符,您会遇到问题。最好总是添加它们以防止出现问题。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2018-10-11
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2016-09-21
    • 2012-11-03
    相关资源
    最近更新 更多