2017-05-25 1073 views
0

我想分配一个变量,我从grep和awk中获得一个值。像下面的东西。任何人都可以帮助我正确的语法?在csh中的grep和变量赋值

下面就是我试图得到一个文件的完整路径的片段:

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

试''名='的awk '/瓦尔\(设计\)/ {打印$ 3}' IGNORECASE = 1个foo.tcl''' – Sundeep

+0

感谢森迪普•!这样可行。 –

回答

1

你需要使用反引号扩展命令,而不是单引号。此外,它看起来像你已经添加了一大堆随机'

这应该工作:

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包含空格或其他特殊的外壳字符。总是添加它们以防止问题出现是个好主意。