"find"コマンドを動的に作成して何かを返すかどうかを確認します。bashコマンドの置き換え:一重引用符でワイルドカードを使用したコマンドの検索
これは最小化された例です。ファイルを含むディレクトリに、
find . -name '*'
もちろんファイルを返します。しかし、
VAR="find . -name '*'"
$VAR
は何も返しません。引用符の解釈の問題のように見えます。しかし、なぜ?
(実際のケースは、私は特定の接頭辞を持つファイルが存在するかどうかを確認したいということです。だから私は、-name '${MYPREFIX}*'
を使う$()
内の出力をキャプチャし、そして得られた文字列が空であるかどうかをテストするためのもの。)
謝罪これが些細なことであれば。私は答えを見つけるのに時間を費やしましたが、私が見つけたすべての事例は何とか異なっていました。通常、問題はfindコマンドがそれを行うべきときにシェルがワイルドカードを展開することです。ここでは、シェルは早すぎる展開をしませんが、findは文字通りの引用符を受け取っているのでどちらも見つからないでしょうか?どんな洞察もありがとう。
単一引用符は、シェルを防止するためのものですワイルドカードを展開することはできませんが、それらは 'find'コマンドの一部ではなく、動作を停止したのは、ファイル名だけを検索し、一重引用符で終わるファイルだけを探すように指示することです。 'eval'は基本的にちょうどここで動作しますが、本当の解決策は引用文を修正することです。しかし、http://mywiki.wooledge.org/BashFAQ/050も参照してください。 – tripleee