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
( 's repeat
에서 영감을 받은) 키워드 도 있습니다 :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)"
예를 들어보세요.