GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser watch pour exécuter une fonction à plusieurs reprises dans Bash ?

J'ai plusieurs alias et fonctions qui ne fonctionnaient pas avec watch jusqu'à ce que je crée une fonction qui enveloppe le watch commande comme celle-ci, inspirée de la réponse acceptée de @l'L'l :

# fishshell
function watch
    command watch -n 0.2 -x fish -c "$argv"
end

# bash
function watch() {
    watch -n 0.2 -x bash -c "[email protected]"
}

# zsh
watch() {
    watch -n 0.2 -x zsh -c "[email protected]"

}

Le seul inconvénient que je vois ici est que vous ne pouvez pas passer plus d'arguments de montre si vous le souhaitez, bien sûr moi j'ai ajouté le -n 0.2 drapeau pour le rafraîchir toutes les 0,2 secondes, si vous avez d'autres drapeaux que vous souhaitez ajouter, vous devrez les ajouter ici au préalable.

Personnellement, je n'utilise que fishshell donc j'espère que les autres ne sont pas cassés, n'hésitez pas à éditer la réponse pour corriger les commandes !

Aussi en bonus pour les paresseux qui utilisent souvent la montre :alias w=watch


Il est possible que watch n'est pas au courant de votre fonction connection_test_loop. Vous pouvez essayer d'ajouter un export sous le test_connection pour peut-être résoudre le problème :

test_connection
export -f connection_test_loop
...

↳ http://linuxcommand.org/lc3_man_pages/exporth.html

En appelant le watch , vous aurez peut-être besoin de cette syntaxe :

watch -x bash -c connection_test_loop

Linux
  1. Fonctions dans les variables shell ?

  2. Utilisation de la commande Linux Sleep dans les scripts Bash

  3. Tableau dans Bash introuvable

  4. utiliser random pour générer une chaîne aléatoire dans bash

  5. Exécutez la commande bash sur le pipeline jenkins

Fonctions bash

Shell Scripting Partie V :Fonctions dans Bash

Exécutez le logiciel MacOS sur Linux à l'aide de Darling

Comment exécuter une commande périodiquement sous Linux à l'aide de Watch

Comment exécuter un script bash

Utilisation de la commande Watch sous Linux