bashコード/スクリプトでコマンドを繰り返して繰り返し数としてAlt nを入力し、キーを押してEnterを入力するにはどうすればよいですか?
たとえば、コード/スクリプト行があります。(typing Alt 7) f (Enter)
答え1
文字を繰り返すという意味であればN時間が経つと、次のことができます。
printf -v string X%.0s {1..12}
X
12秒のシーケンスが保存されます$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
これはl
sで長さ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)"
例を見てください。