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( '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)"예를 들어보세요.

관련 정보