xargs
parece ser o que você quer:
echo install update doctor | xargs -n1 brew
Por exemplo:
mkdir ~/{1,2,3}
Cria diretórios ~/1
, ~/2
e ~/3
. Isso equivale a:
mkdir ~/1
mkdir ~/2
mrdir ~/3
Mas, usando a mesma sintaxe no caso de CMD < argument >
:
brew {install, update, doctor}
... é um absurdo interpretado pelo shell. Isso não significa:
brew install
brew update
brew doctor
É fácil criar um script rápido, mas deve ser mais simples usando expansão ou substituição no bash. O que estou perdendo?
Executando Bash 3.2.57(1)-release
em OS X 10.10.2
Escape o primeiro espaço e remova os outros espaços:
$ printf "'%s'\n" brew\ {install,update,doctor}
'brew install'
'brew update'
'brew doctor'
Se brew
for um comando, apenas escreva (também sem os espaços):
brew {install,update,doctor}
como com o seu exemplo mkdir:
mkdir {install,update,doctor}
Você não precisa de nenhum processo ou tubulação externa para fazer isso; tudo pode ser feito no seu bash
shell.
Que tal (observe as barras invertidas, todas importantes):
echo brew\ {install,update,doctor}\;| bash
o primeiro padrão (argumentos para echo
) se expandirá assim:
echo brew install; brew update; brew doctor;
que é então ecoado, produzindo esta saída:
brew install; brew update; brew doctor;
que nós canalizamos para uma nova instância do bash.