シェルスクリプトよりも次の行が見つかりました。
ls $dir | grep -c "$NAME.${var}\$"
これはsum$
変数を拡張することを知っていますが、最後にする必要がありますか?NAME
var
\$
答え1
grep
文字列を"$NAME.${var}\$"
正規表現として使用します。おそらく、問題のコード行の前にシェル変数name
sumvar
に値が割り当てられ、シェルがスクリプト値$NAME
sum を解釈します${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で終わるファイルのみが印刷されます。