我正在运行以下命令:
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美元符号。