명령 대체를 통해 여러 개의 완전한 명령을 생성할 수 있습니까?

명령 대체를 통해 여러 개의 완전한 명령을 생성할 수 있습니까?

touch, ls및 와 같이 여러 인수를 허용하는 명령이 많이 있습니다 rm. 이렇게 하면 해당 구성을 사용하여 {1..3}명령에 대한 여러 매개변수를 생성할 수 있습니다. 예를 들어:

[root@192 ~]# touch file{1..3}
[root@192 ~]# ls file{1..3}
file1  file2  file3
[root@192 ~]# rm -f file{1..3}
[root@192 ~]#

일부 명령은 여러 매개변수를 지원하지 않습니다 groupadd. 예를 들어 다음 명령은 오류를 생성합니다.

[root@192 ~]# groupadd g{1..3}
Usage: groupadd [options] GROUP
...
[root@192 ~]# 

예를 들어 여러 개의 완전한 명령을 생성할 수 있습니까 groupadd g1; groupadd g2; groupadd g3;? 다음 명령을 시도했지만 실패했습니다.

[root@192 ~]# `"groupadd g"{1..3}`
bash: groupadd g1: command not found...
[root@192 ~]#

그런데 저는 Bash를 처음 접했고 이 예제는 데모용으로만 사용되었습니다. 나는 여러 그룹을 만들려는 것이 아닙니다.

답변1

이를 수행하는 방법에는 여러 가지가 있습니다. 가장 간단하고 확실한 방법 중 하나는 for루프를 사용하는 것입니다. 예를 들어:

for g in {1..3}; do groupadd "g$g" ...other groupadd args here... ; done

참고: touch, lsrm예제(여러 인수, 즉 확장명을 사용하여 명령을 한 번 실행함 file{1..3})와는 달리, 이는 매번 하나의 인수를 사용하여 groupadd세 번 실행됩니다."g$g"

답변2

loop 보다 짧은 방법을 찾았습니다 for.

eval "groupadd g"{1..3}";"

관련 정보