【问题标题】:Saving grep output in csh在 csh 中保存 grep 输出
【发布时间】:2015-12-10 05:46:31
【问题描述】:

您好,我刚开始编写一些 csh 脚本,但在将 grep 结果存储到变量时遇到了问题。我正在尝试从包含用户名作为子字符串的文件中保存一行。

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

第一行只是调试行,所以我知道我的 grep 得到了正确的行。这是给我问题的第二行。当我回显它时,它会打印“回显:不匹配”。有人可以提供帮助吗?

【问题讨论】:

    标签: csh


    【解决方案1】:

    您的密码文件包含*。在脚本中添加双引号:

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

    如果没有引号,* 将被解释为 [可能] 不会匹配任何真实文件的通配符文件匹配字符。

    【讨论】:

    • 不客气。现在,我 99.44% 的脚本都是用 perl 编写的。但是,在此之前,我只使用 csh [它仍然是我的登录 shell]。很高兴看到一些人仍在使用 csh
    • set line=$(grep -w $name /etc/passwd) 更好,因为它更具可读性,并且允许嵌套命令。 cmnd1 cmd2 `` 在第二个反引号处结束。
    • @ArifBurhan 呃,不。这适用于cshnot bash 等。人。 cshno 这样的结构 [其语法与 sh 的派生词完全不同]
    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2014-09-13
    • 2017-10-25
    • 1970-01-01
    • 2016-12-08
    • 2012-10-06
    • 1970-01-01
    相关资源
    最近更新 更多