コマンド置換
別のオプションは、コマンド置換を使用することです。コマンドをラップすると、コマンド$()
が実行され、コマンドがその出力に置き換えられます。
cat $(find ./inhere -size 1033c 2> /dev/null)
となります
cat ./inhere/file1 .inhere/file3
これは、バックティックで古いスタイルのラッピングコマンドを使用することとほぼ同じです。
cat `find ./inhere -size 1033c 2> /dev/null`
上にリンクされているドキュメントの詳細
Bashは、サブシェル環境でコマンドを実行し、コマンド置換をコマンドの標準出力に置き換えて、末尾の改行を削除することにより、拡張を実行します。埋め込まれた改行は削除されませんが、単語分割中に削除される場合があります。コマンドの置換$(cat file)
は、同等の高速なコマンドで置き換えることができます$(< file)
。
置換の古いスタイルのバッククォートのフォームを使用する場合は、バックスラッシュが続いたときを除き、その文字通りの意味を保持し$
、`
または\
。バックスラッシュが前に付いていない最初のバッククォートは、コマンド置換を終了します。$(command)
フォームを使用する場合、括弧内のすべての文字がコマンドを構成します。特別に扱われるものはありません。
コマンド置換はネストできます。バッククォートされたフォームを使用するときにネストするには、バックスラッシュで内側のバッククォートをエスケープします。
置換が二重引用符で囲まれている場合、結果に対して単語分割とファイル名拡張は実行されません。
良い使用例については、この別の回答を参照してください。