Adicione alguma semi-comma na resposta do blogger para torná-lo uma só linha:
for variables in {1 2 3 4 5}; do ls; done
Suponha que eu tenha um comando de terminal chamado foo
(na realidade isso seria algo como cd
ou ls
ou algo mais complicado. Existe uma maneira de executar este comando várias vezes SEM o uso de um roteiro.
Por exemplo, quero fazer o equivalente ao seguinte:
foo && foo && foo && foo && foo
Existe alguma maneira de fazer algo nos moldes de
foo * 5
ou talvez
5:foo
Estou usando uma máquina linux.
Adicione alguma semi-comma na resposta do blogger para torná-lo uma só linha:
for variables in {1 2 3 4 5}; do ls; done
o blogger está certo. no entanto, é importante observar a sintaxe exatamente: se você estiver usando um shell interativo (por exemplo, o terminal)
echo -n; for i in {1..5}; do if [[ $? ]]; then foo; fi; done
o "$?" retorna o status da chamada de função anterior; porque estamos chamando "echo" primeiro, a primeira iteração do loop será "true" (0 no bash). O "fi" fecha a instrução "if", e os ponto-e-vírgulas são necessários.
aqui é a mesma coisa se você estivesse escrevendo um script bash:
#!/bin/bash
echo -n
for i in {1..5}; do
if [[ $? ]]; then
foo
fi
done
você notará que o foo não tem um ponto e vírgula depois dele; ao escrever um script bash completo em um ambiente onde as quebras de linha estão disponíveis (por exemplo, seu editor de texto favorito), as quebras de linha fazem a mesma coisa que os pontos-e-vírgulas:)
também, note que você poderia usar
[[ $? ]] && foo
em vez da instrução if; perceber que o & & significa que foo só será executado se o foo anterior não tiver um erro. isto é, na chamada de função
thing1 && thing2
thing2 só será executado se o thing1 rodar bem (tecnicamente, se ele retornar um valor 0) para ignorar se foo está funcionando ou não, use ponto-e-vírgula em vez de & &
Você pode tentar algo como:
for i in {1..10}; do YourCommand; done
Exemplo:
for i in {1..5}; do ls -l; done
Você já tentou usar o loop "for"?
for VARIABLE in 1 2 3 4 5 .. N
do
command1
command2
commandN
done
Encontrei um ótimo método aqui .
Eu sei que ainda é "um tipo de script", mas acho que é o mais próximo que você pode conseguir sem digitar uma linha de comando inteira com comandos.
Você pode criar o comando repeat
com o qual você pode fazer isso:
repeat 5 ./foo
Adicione as seguintes linhas ao final do seu ~/.bashrc
(se você estiver usando o bash):
repeat() {
n=$1
shift
while [ $(( n -= 1 )) -ge 0 ]
do
"$@"
done
}
e na próxima vez que você fizer login (ou iniciar o bash), você poderá usar repeat 5 ./foo
.
Entre. repeat
já é uma palavra-chave (que faz exatamente o mesmo) em csh, tcsh e zsh, portanto, com essa adição, você a adicionará a bash
e funcionará exatamente da mesma maneira.
Tags command-line bash linux terminal