スペースを追加せずにbashで文字列パラメータを複数行に分割する方法

スペースを追加せずにbashで文字列パラメータを複数行に分割する方法

次のコマンドを実行しています。

some_command --flag "foo\
    bar\
    quux" arg2

これにより文字列がに渡されますfoo\tbar\tquux

タブを使用せずに(または他のスペース文字を追加せずに)このパラメータを渡す方法を探しています。しかし、インデントを保ちます(私のスクリプトを読むことができるように)。

ベストアンサー1

some_command --flag "$(printf '%s' foo\
    bar\
    quux)" arg2

一番読みやすいわけではありませんが、そうします。 「foo」、「bar」、および「quux」をコマンドの引数とprintfフォーマット%s文字列として渡します。引数より少ない書式文字が指定されている場合、書式文字列は必要に応じて繰り返されます。これは%s%s%s、3つの文字列すべてをスペースなしで順番に印刷するのと同じです。最後に、「foobarquux」コマンドの出力は引数にprintf置き換えられますsome_command

おすすめ記事