Existem muitos comandos que aceitam vários parâmetros, como touch
, ls
e rm
. Para que eu possa usar a construção {1..3}
para gerar vários parâmetros para o comando. Por exemplo:
[root@192 ~]# touch file{1..3}
[root@192 ~]# ls file{1..3}
file1 file2 file3
[root@192 ~]# rm -f file{1..3}
[root@192 ~]#
Alguns comandos não suportam vários parâmetros, como groupadd
. Portanto, o comando a seguir gera um erro:
[root@192 ~]# groupadd g{1..3}
Usage: groupadd [options] GROUP
...
[root@192 ~]#
É possível gerar vários comandos completos como groupadd g1; groupadd g2; groupadd g3;
? Tentei o seguinte comando, mas falhei:
[root@192 ~]# `"groupadd g"{1..3}`
bash: groupadd g1: command not found...
[root@192 ~]#
Aliás, sou um novo usuário do Bash e o exemplo é apenas para fins de demonstração. Eu não estou tentando criar um monte de grupos.
Existem várias maneiras de fazer isso. Uma das mais simples e óbvias é usar um
for
loop. Por exemplo:Nota: ao contrário de seus exemplos
touch
,ls
, erm
(que executam os comandos UMA VEZ com vários argumentos, a expansão defile{1..3}
), isso é executadogroupadd
TRÊS vezes, com um"g$g"
argumento de cada vez.Eu encontrei um caminho que é mais curto que um
for
loop.