我正在尝试使用从grep和awk获取的值来分配变量。像下面的东西。任何人都可以用正确的语法帮助我吗?
以下是我尝试获取文件完整路径的代码段:
set name='egrep -i "vars\(design\)" foo.tcl' | 'awk '{print $3}''
set dir = $cwd
set fulldir = $dir/$name
答案 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字符,则在没有引号的情况下您会遇到问题。总是添加它们以防止出现问题是一个好主意。