저는 데비안 9를 사용하고 있습니다. Bash에서는 echo {a..z}
알파벳을 입력하거나 echo {a..z}{a..z}
문자 조합을 인쇄할 수 있습니다. 그러나 인덱스를 생성하고 싶습니다. a b c d
기다렸다가 인덱스 가 나올 때까지 기다립니다 aa bb cc dd
( 까지 ). 버팀대 확장 또는 기타 유사한 방법을 통해 이를 수행하려면 어떻게 해야 합니까? 감사해요aaa bbb ccc ddd
aaaaa bbbbb
zzzzz
답변1
다음을 수행할 수 있습니다.
$ printf '%s ' {a..z}; echo
a b c d e f g h i j k l m n o p q r s t u v w x y z
$ printf '%s%s ' {a..z}{,}; echo
aa bb cc dd ee ff gg hh ... ss tt uu vv ww xx yy zz
$ printf '%s%s%s ' {a..z}{,,}
aaa bbb ccc ddd eee ... ttt uuu vvv www xxx yyy zzz
설명: 중괄호 확장은 각 쉼표(및 선행 문자열)로 구분된 값에 대한 매개변수를 생성합니다.
$ echo A{d,u,j}
Ad Au Aj
그러나 값이 비어 있으면 선행 문자열만 반복됩니다.
$ echo A{,,}
A A A
선행 문자열 자체가 중괄호로 확장되면 모든 문자열이 반복됩니다.
$ echo {one,two}{,,}
one one one two two two
그런 다음 printf(및 후행 에코)를 사용하여 출력 형식을 지정합니다.
$ printf '%s%s%s ' {one,two}{,,}; echo
oneoneone twotwotwo
문자 값을 사용하십시오.
$ printf '%s%s%s ' {a..d}{,,}; echo
aaa bbb ccc ddd
답변2
bash
AFAIK 확장된 마법만으로는 이 작업을 수행 할 수 없습니다 . 하지만 언제든지 사용할 수 있어요
for c in {a..z}; do echo $c$c; done
for c in {a..z}; do echo $c$c$c; done
...
답변3
이것은 Bash의 또 다른 옵션입니다.
index=$(echo -n {a..z})
num=2
until ((num>5)); do
for c in {a..z}; do
case "$num" in
2 ) index=$(echo -n "$index $c$c") ;;
3 ) index=$(echo -n "$index $c$c$c") ;;
4 ) index=$(echo -n "$index $c$c$c$c") ;;
5 ) index=$(echo -n "$index $c$c$c$c$c") ;;
esac
done
((num++))
done
echo "$index"
- 에 첫 번째 그룹을 추가합니다
index
. - 나머지 4세트를 4회 반복합니다.
for
각 문자에 대해 루프를 실행합니다.case
루프의 명령문은for
색인에 추가되는 각 문자의 인스턴스 수를 결정합니다.