特別な順序なしでcoreutil
sのパラメータをどのように参照しますか?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)