GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden Sie watch, um eine Funktion wiederholt in Bash auszuführen?

Ich habe mehrere Aliase und Funktionen, die früher nicht mit watch funktionierten bis ich eine Funktion erstellt habe, die watch umschließt Befehl wie dieser, inspiriert von @l'L'l akzeptierter Antwort:

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

}

Der einzige Nachteil, den ich hier sehe, ist, dass Sie nicht mehr Überwachungsargumente übergeben können, wenn Sie möchten, ich habe natürlich den -n 0.2 hinzugefügt Flag, damit es alle 0,2 Sekunden aktualisiert wird. Wenn Sie andere Flags hinzufügen möchten, müssen Sie diese vorher hier hinzufügen.

Ich persönlich verwende nur fishshell Ich hoffe also, dass die anderen nicht kaputt sind. Zögern Sie nicht, die Antwort zu bearbeiten, um die Befehle zu reparieren!

Auch als Bonus für die Faulen, die oft zuschauen:alias w=watch


Es ist möglich, dass watch ist sich Ihrer connection_test_loop-Funktion nicht bewusst. Sie können versuchen, export hinzuzufügen unterhalb der test_connection, um das Problem vielleicht zu lösen:

test_connection
export -f connection_test_loop
...

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

Beim Aufruf von watch , benötigen Sie möglicherweise diese Syntax:

watch -x bash -c connection_test_loop

Linux
  1. Verwenden von sudo zum Delegieren von Berechtigungen in Linux

  2. Funktionen in Shell-Variablen?

  3. Array in Bash nicht gefunden

  4. Führen Sie das Bash-Skript als Daemon aus

  5. Verwenden von random zum Generieren einer zufälligen Zeichenfolge in Bash

Bash-Funktionen

Shell-Scripting Teil V:Funktionen in Bash

Führen Sie MacOS-Software unter Linux mit Darling aus

So führen Sie einen Befehl regelmäßig unter Linux mit Watch aus

So führen Sie ein Bash-Skript aus

Verwenden des Watch-Befehls unter Linux