Grep

grep中正則表達式的奇怪錯誤

  • April 29, 2012

我正在執行以下命令:

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

在執行 Linux 的伺服器上。

與核心 2.6.18 相同的作業系統給出了正確的答案,而使用 2.6.19 我得到:

Illegal variable name. 

顯然 $ 符號導致了錯誤,但問題是為什麼它在核心中表現不同?

1)您在兩台機器上使用相同類型的外殼嗎?

2)您是否嘗試過使用單引號,以便 shell 不會嘗試將美元符號解釋為變數?

這更有可能是您正在執行的外殼的問題。首先,引號;使用單引號時,變數不會在輸出字元串中被替換。IE,

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

在您的情況下,它實際上是在嘗試執行$,但$不是有效的變數名。如果您使用單引號,shell 將不允許替換美元符號。

引用自:https://serverfault.com/questions/384256