GNU/Linux >> Linux Esercitazione >  >> Linux

Usare watch per eseguire ripetutamente una funzione in Bash?

Ho più alias e funzioni che prima non funzionavano con watch finché non ho creato una funzione che avvolge il watch comando come questo, ispirato da @l'L'l risposta accettata:

# 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]"

}

L'unico inconveniente che vedo qui è che non puoi passare più argomenti watch se vuoi, sicuramente ho aggiunto il -n 0.2 flag per aggiornarlo ogni 0,2 secondi, se hai altri flag che desideri aggiungere dovrai prima aggiungerli qui.

Personalmente uso solo fishshell quindi spero che gli altri non siano rotti, non esitare a modificare la risposta per correggere i comandi!

Anche come bonus per i pigri che usano spesso l'orologio:alias w=watch


È possibile che watch non è a conoscenza della tua funzione connection_test_loop. Puoi provare ad aggiungere un export sotto test_connection forse per risolvere il problema:

test_connection
export -f connection_test_loop
...

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

Quando chiami watch , potresti aver bisogno di questa sintassi:

watch -x bash -c connection_test_loop

Linux
  1. Utilizzo di sudo per delegare le autorizzazioni in Linux

  2. Utilizzo del comando di sospensione di Linux negli script Bash

  3. Bash Beginner Series #9:Utilizzo delle funzioni in Bash

  4. Array in Bash non trovato

  5. Come eseguire ripetutamente lo script bash ogni N secondi?

Funzioni Bash

Shell Scripting Parte V:Funzioni in Bash

Esegui il software MacOS su Linux usando Darling

Come eseguire periodicamente un comando in Linux usando Watch

Come eseguire uno script Bash

Utilizzo del comando Watch in Linux