csh

时间:2017-05-25 04:52:02

标签: awk grep csh

我正在尝试使用从grep和awk获取的值来分配变量。像下面的东西。任何人都可以用正确的语法帮助我吗?

以下是我尝试获取文件完整路径的代码段:

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

1 个答案:

答案 0 :(得分: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字符,则在没有引号的情况下您会遇到问题。总是添加它们以防止出现问题是一个好主意。