2015-12-10 35 views
0

嗨,我刚刚开始做一些csh脚本,并且一直在将grep结果存储到变量时遇到问题。我试图从包含用户名的文件中保存一行作为子字符串。在csh中保存grep输出

echo `grep -w $name /etc/passwd` 
set line=`grep -w $name /etc/passwd` 
echo $line 

第一行只是一个调试行,所以我知道我的grep正在获取正确的行。它的第二行是给我的问题。当我回应它时,它会打印出“回声:不匹配”。任何人有任何帮助提供?

回答

1

您的passwd文件包含*。双引号添加到您的脚本:

set line="`grep -w $name /etc/passwd`" 
echo "$line" 

不带引号的*被解释为一个通配符文件匹配字符[可能]将不会匹配任何真正的文件。

+0

就是这样,非常感谢。 –

+1

你很受欢迎。如今,我在perl中编写了99.44%的脚本。但是,在此之前,我独家使用了csh [并且它是_still_我的登录shell]。很高兴看到一些人仍然使用csh –

+0

set line = $(grep -w $ name/etc/passwd)更好,因为它更具可读性,并且允许嵌套命令。 'cmnd1'cmd2''在第二个反引号处结束。 –