奇怪的错误正则expression式在grep

我正在运行以下命令:

cat something | egrep "(abc|def)$" 

在运行Linux的服务器上。

与2.6.18内核相同的操作系统给出了正确的答案,而在2.6.19中我得到:

 Illegal variable name. 

显然$符号导致了错误,但问题是为什么它在内核之间的行为是不同的?

1)你是否在两台机器上使用相同types的shell?

2)你是否尝试过使用单引号,以便shell不尝试将美元符号解释为variables?

更可能这是你正在运行的shell的一个问题。 首先,报价; 当使用单引号时,variables将不会在输出string中被replace。 也就是说,

 % VAR="hello" % echo "$VAR world!" hello world! % eco '$VAR world!' $VAR world! 

在你的情况,它字面上试图执行$ ,但$不是一个有效的variables名称。 如果您使用单引号,则shell将不允许replace美元符号。