他のコマンドの引数として使用するために、コマンド置換の出力を正しくエスケープします。

他のコマンドの引数として使用するために、コマンド置換の出力を正しくエスケープします。

COMMAND$(COMMAND)bashでコマンド置換( ``または)の出力を他のプログラムの引数として正しく使用する方法はありますか?

例:

% touch -- safe-name -name-with-dash-prefix "name with space" \
    'name-with-double-quote"' "name-with-single-quote'" \
    'name-with-backslash\'

これらの何も:

% ls -l `ls`
% ls -l $(ls)

これでもなく:

% ls -l "`ls`"
% ls -l "$(ls)"

コマンド置換の出力は、すべてのサンプル名の引数として正しく戻されます。二重引用符がない場合は、引用符の名前は大丈夫ですが、スペースのある名前は大丈夫です。二重引用符を使用するときは、名前にスペースを含めてもかまいませんが、複数の名前を連結することができます。

注:議論をコマンドの置き換え(パイプ、マップファイル、またはxargsなし)に制限します。

関連情報