grepに渡された変数名の末尾に\ $を使用してください。

grepに渡された変数名の末尾に\ $を使用してください。

シェルスクリプトよりも次の行が見つかりました。

ls $dir | grep -c "$NAME.${var}\$"

これはsum$変数を拡張することを知っていますが、最後にする必要がありますか?NAMEvar\$

答え1

grep文字列を"$NAME.${var}\$"正規表現として使用します。おそらく、問題のコード行の前にシェル変数namesumvarに値が割り当てられ、シェルがスクリプト値$NAMEsum を解釈します${var}。正規表現の最後の「$」はバックスラッシュにエスケープされるので、スクリプトを解釈するシェルはシェル変数の値を挿入しようとしません。 「$」はgrep正規表現の一部として渡されます。実際、「$」は正規表現のgrep文脈で特別な意味を持ちます。 「$」は「行末」を意味しますgrep。要求された意味以外にgrep最後の「$」は必要ありません。

答え2

結果は次のとおりです。 john、alex_john、alex_john1、およびjohn1というディレクトリにファイルを作成し、次のことを行うとします。

[root@localhost ~]# ls | grep "john"
john
alex_john
alex_john1
john1
[root@localhost ~]# ls | grep "john\$"   <==here it would insert end of line
john
alex_john
[root@localhost ~]#  

したがって、2番目のgrepでは、johnで終わるファイルのみが印刷されます。

関連情報