【发布时间】:2013-12-16 13:16:03
【问题描述】:
我正在使用 grep 来匹配 Cshell 中的文件名。 我想匹配所有适合的文件 $名称。 没有任何其他文件匹配,例如 $name..
当使用美元符号强制匹配出现在行尾时,效果很好。唯一的问题是,当我想使用变量 $name 时,我必须使用双引号 "" 而不是 '',然后 $ 不起作用。
> ls back_dir | grep 'aa\.[0-9]$'
aa.1
aa.2
>ls back_dir | grep "aa\.[0-9]$"
Illegal variable name.
【问题讨论】:
-
不要使用 C-shell 编写脚本,否则在可预见的将来,您会为这样的事情而烦恼。谷歌“C shell 为什么不”。
-
你可能需要看到这个:Top Ten Reasons not to use the C shell。第一个原因会告诉你遇到了什么。
-
@devnull - 很棒的链接。它实际上显示了这个确切的问题,包括我的“解决方案”(不起作用,现在被删除)和正确的(但是 wtf?!!)方法。 Ed 的建议显然是合理的。我喜欢布鲁斯巴内特的作品。他的
awk教程仍然是我的最爱。