これはgrepのではエラーではありません。これは、スクリプトがどのように解釈されるかについての理解に誤りである。
...../xyztableから明確な
<list of files in current directory>
を選択私はスクリプトで記述する場合
:引用符で囲まれていない、エスケープ、アスタリスクは、シェルによって解釈されているので、私はファイル名のリストを取得します
echo *
(grepしていないが、/ binに/ bashや/ binに/ shまたはwあなたが使っているシェルを)パターン '*'と一致するファイル名に置き換える要求、つまりそれらのすべてを要求します。
私はスクリプトで記述する場合:
echo "*"
それは引用符で囲まれた文字列にいたので、私は、シングル「*」を取得します。
私が書く場合:
STAR="*"
echo $STAR
変数に代入しながら、私は星を引用し、私は、コマンドの中に変数を代入するとき、それは引用符で囲まれていないとなりましたので、私は、再びファイル名を取得します。
私が書く場合:
STAR="*"
echo "$STAR"
二重引用符は変数展開を可能にするので、私は、シングルスターを取得します。
あなたはバッククォートを使用しています - つまり、コマンドの前後に `文字 - 。これは、コマンドの出力を変数に取り込みます。
私は、あなたがコマンドの結果をエコーすることになり、それ以外の場合は、結果をファイルにリダイレクトするだけでよいことをお勧めします。 (結局のところ、あなたのログファイルが本当にいっぱいになったため、LONG_QUERYに10,000行の出力が含まれている場合、何をするつもりですか?)
これを避けるには、少なくともecho "$LONG_QUERY"
を入力してください(二重引用符で囲んでください)。
2番目の結果は/ xyztableから別ファイルfile2 file3を選択していたはずです....私はファイルを大括弧で入れていましたが、質問を投稿すると大括弧内のすべてが削除されたようです。 – user6381298
投稿を編集して –
[ファイル名の拡張子](https://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html)は非常に期待されています。 LONG_QUERY "。 –