特別な順序なしでprintfに引数を印刷します。

特別な順序なしでprintfに引数を印刷します。

特別な順序なしでcoreutilsのパラメータをどのように参照しますか?printf

私が避けたいものは次のとおりです。

$ printf '%s %s %s %s %s %s %s' a c a c b c a
a c a c b c a

これが私がしたいことです:

$ printf '%s %s³ %s¹ %s³ %s² %s³ %¹' a b c
a c a c b c a

これはPerlで実装されました。

perl -e 'printf ("%s %3\$s %1\$s %3\$s %2\$s %3\$s %1\$s\n", 'a', 'b', 'c');'
a c a c b c a

4つのパラメータのみが渡されますprintf

ベストアンサー1

これを行うための組み込み方法が見つかりません。次のように、ループ内でいつでもパラメータを生成できます。

forループ

$ printf '[ -d %s ] || mkdir %s; cd %s\n' `for run in {1..3}; do echo "$dir";done`

若干異なる:

$ printf '[ -d %s ] || mkdir %s; cd %s\n' $(for run in {1..3}; do echo "$dir";done)

コマンドのこの部分を変更して引数の数を制御できます{1..3}

シーケンスとxargs

$ printf '[ -d %s ] || mkdir %s; cd %s\n' $(seq 1 3 | { xargs -i -- echo "$dir"; })

これは 1 から 3 までの一連の数字を生成し、 { xargs -i ... } が実行される回数を制御します。

はい

@riciのコメントのおかげで、次の設定を使用することもできますyes ... | head -n 3

$ printf '[ -d %s ] || mkdir %s; cd %s\n' $(yes "$dir" | head -n 3)

引用する

おすすめ記事