Alt nを入力するのと同じコマンドbashコード/スクリプトを繰り返す方法

Alt nを入力するのと同じコマンドbashコード/スクリプトを繰り返す方法

bashコード/スクリプトでコマンドを繰り返して繰り返し数としてAlt nを入力し、キーを押してEnterを入力するにはどうすればよいですか?

たとえば、コード/スクリプト行があります。(typing Alt 7) f (Enter)

ベストアンサー1

文字を繰り返すという意味であればN時間が経つと、次のことができます。

printf -v string X%.0s {1..12}

X12秒のシーケンスが保存されます$string

または:

$ echo "$(printf X%.0s {1..12})"
XXXXXXXXXXXX

これは、追加のプロセスをフォークすることを意味しますが。

次のヘルパー機能も使用できます。

repeat_string() {
  awk -- 'BEGIN{for (i = 0; i < ARGV[1]; i++) printf "%s", ARGV[2]}' "$@"
}

それから:

echo "$(repeat_string 12 X)"

zsh塗りつぶし演算子を使用できます。

$ echo ${(l[12][X])}
XXXXXXXXXXXX

これはlsで長さ12が追加された空の拡張eftですX。同様のrライトパディングパラメータ拡張フラグもあります。

変数に格納された数と文字の場合:

n=12 c=X
echo ${(pl[$n][$c])}

zsh( 'srepeatに触発された)キーワードもあります:tcsh

$ echo "$(repeat 12 printf %s X)"
XXXXXXXXXXXX

を使用すると、bashいつでもrepeat簡単なコマンドを繰り返す関数を書くことができます。

repeat() {
  local n="$1"
  shift
  while ((n-- > 0)); do
    "$@"
  done
}

それではecho "$(repeat 12 printf %s X)"上記と同じです。

repeatエイリアスを使用して、複合コマンドを繰り返すようにキーワードをシミュレートできます。

alias repeat='i=0; while test "$((i++))" -lt'

それからecho "$(repeat 12; do printf %s X; done)"例を見てください。

おすすめ記事