2017-05-25 56 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包含空格或其他特殊的外殼字符。總是添加它們以防止問題出現是個好主意。