5
生成されたファイル名のリストを引数リストとして使用—スペースあり
によって収集されfindたファイル名のリストを使用してスクリプトを起動しようとしています。特別なものはなく、次のようになります。 $ myscript `find . -name something.txt` 問題は、パス名の一部にスペースが含まれているため、引数の展開時に2つの無効な名前に分割されることです。通常、名前を引用符で囲みますが、ここでは逆引用符の展開によって挿入されます。find各ファイル名の出力をフィルタリングして引用符で囲みましたが、bashがそれらを見るまでにそれらを取り除くには遅すぎて、ファイル名の一部として扱われます: $ myscript `find . -name something.txt | sed 's/.*/"&"/'` No such file or directory: '"./somedir/something.txt"' はい、それがコマンドラインの処理方法のルールですが、どうすれば回避できますか? これは恥ずかしいことですが、私は正しいアプローチを思い付くことに失敗しています。私は最終的にそれをどのように行うかを見つけましたxargs -0 -n 10000...しかし、それは私がまだ聞きたいと思うようなsuchいハックです:バッククォート展開の結果を引用する方法、または別の方法で同じ効果を達成するにはどうすればよいですか? 編集:私は、事実について混乱していたxargs んそれはそう言われていますか、システムの制限を超えることがありますしない限り、単一の引数リストにコレクトすべての引数を。まっすぐに設定してくれてありがとう!他の人は、受け入れられた答えを読んでいるときにこれを覚えておいてください。なぜなら、それは直接指摘されていないからです。 私は答えを受け入れましたが、私の質問は残ります:バックティック(または$(...))拡張でスペースを保護する方法はありませんか?(受け入れられた解決策は非bash回答であることに注意してください)。