1

ファイルに対してgrepを実行すると、出力が1行になります。この出力には、データとして * が含まれています。シェル スクリプトで変数に値を代入しようとしていますが、* は現在のフォルダー内のファイル リストに置き換えられています。

例: 私のスクリプト名はで、同じディレクトリにscript1.sh別のファイルがあります。script2.sh

スクリプトの内容は、

VAR1=`grep pattern search_file`
echo $VAR1

意図した出力は次のようになります

パターンは*

しかし、私が得ている出力は

パターンは script1.sh script2.sh です

私が間違っていることを教えてください。

4

3 に答える 3

1

シェル オプションを使用set -fすると、サブシェルとインタラクティブ セッションでのグロビングが無効になります。set +fグロビングを再度有効にするために使用します。

于 2013-04-26T15:35:06.083 に答える
1

* を \ でエスケープする必要があります。そうしないと、現在のディレクトリ内のファイル名に一致するワイルドカードとして扱われます。

\*
于 2013-04-26T15:32:13.857 に答える