Saltar al contenido

¿Cómo ejecutar un comando varias veces, usando bash shell?

Bienvenido a nuestro sitio web, en este sitio hallarás la solucíon que necesitas.

Solución:

Solución 1:

No creo que exista un comando o shell incorporado para esto, ya que es un subconjunto trivial de lo que el shell Bourne for loop está diseñado y, por lo tanto, implementar un comando como este es bastante simple.

Según la sugerencia de JimB, use el Bash incorporado para generar secuencias:

for i in 1..10; do command; done

Para versiones muy antiguas de bash, puede usar el seq dominio:

for i in `seq 10`; do command; done

Esto itera diez veces ejecutando command cada vez – puede ser una tubería o una serie de comandos separados por ; o &&. Puedes usar el $i variable para saber en qué iteración se encuentra.

Si considera que este guión es una secuencia de comandos y, por lo tanto, por alguna razón no especificada (pero quizás válida) indeseable, puede implementarlo como un comando, tal vez algo como esto en su .bashrc (no probado):

#function run
run() 
    number=$1
    shift
    for i in `seq $number`; do
      [email protected]
    done

Uso:

run 10 command

Ejemplo:

run 5 echo 'Hello World!'

Solución 2:

ps aux | grep someprocess parece que desea ver los cambios de un programa durante un tiempo fijo. Eduardo dio una respuesta que responde exactamente a su pregunta, pero hay una alternativa: watch:

watch 'ps aux | grep someprocess'

Tenga en cuenta que he puesto el comando entre comillas simples para evitar que el shell interprete el comando como “ejecutar reloj ps aux” y canalizar el resultado grep someprocess. Otra forma de hacer el comando anterior sería:

watch ps aux | grep someprocess

Por defecto, watch se actualiza cada dos segundos, eso se puede cambiar usando el -n opción. Por ejemplo, si desea tener un intervalo de 1 segundo:

watch -n 1 'ps aux | grep someprocess'

Solución 3:

Solo por diversión

pgrep ssh ;!!;!!;!!;!!;!!;!!

Solución 4:

Prueba esto:

yes ls | head -n5 | bash

Esto requiere que el comando se ejecute en una subcapa, una pequeña penalización de rendimiento. YMMV. Básicamente, obtienes el comando “sí” para repetir el string “ls” N veces; mientras que “head -n5” terminó el ciclo en 5 repeticiones. La tubería final envía el comando al shell de su elección.

De paso csh-como las conchas tienen un incorporado repeat dominio. ¡Podrías usar eso para ejecutar tu comando en un sub-shell de bash!


Solución 5:

similar a las respuestas anteriores, pero no requiere el bucle for:

seq 10 | xargs -I -- echo "hello"

tubería de salida de seq a xargs sin argumentos ni opciones

Si tienes algún dificultad y capacidad de mejorar nuestro noticia puedes añadir un exégesis y con deseo lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *