Bestätigen Sie, bevor Sie die Eingabeaufforderung verlassen

Bestätigen Sie, bevor Sie die Eingabeaufforderung verlassen

Ich versuche, jedes Mal eine Bestätigungsmeldung zu erhalten, wenn ich exiteinen Befehl in die Eingabeaufforderung eingebe. Dazu habe ich versucht, trapin der .bashrcDatei zu verwenden, aber es scheint, als wäre Trap keine Lösung, da es den ursprünglichen Befehl trotzdem ausführt. Gibt es eine Möglichkeit, dies zu erreichen?

Hier ist mein Bashrc-Skriptcode, der die Aufgabe nicht erledigen konnte:

function _exit()        # Function to run upon exit of shell.
{
    read -p "${RED}Are you sure? " REPLY
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        echo -e "${RED}Bye${NC}"
        exit 0
    else
        #I do not know what to do here to not exit
        return
    fi  
}
trap _exit EXIT

Antwort1

Wenn die Shell zshoder ist bash(aber nicht im shModus), erstellen Sie exiteine Funktion. Funktionen haben Vorrang vor Shell-Builtins (auch speziellen wie exit) in zshoder bash(aber nicht in POSIX-Shells). Benennen Sie Ihre Funktion also einfach in um exitund verwenden Sie sie command exitstattdessen innerhalb der Funktion. Andernfalls hätten Sie natürlich eine endlose Rekursion.

Antwort2

Die Überlastungsfunktion exit()passt nicht in dieses ^DSzenario. Reden wir also darüber trap.

Ihre elseKlausel sollte einige Dinge enthalten, die entweder Bash zurückhalten oder das Exit-Signal ignorieren können. Ich weiß auch nicht, wie das geht.

Aber ich denke, Sie können vorerst alternativ Bash erneut öffnen.

Wenn Sie Ihre elseKlausel durch Folgendes ersetzen:

echo
history -a
bash

Und wenn Sie dann den Ausgang in der Eingabeaufforderung abbrechen, wird eine neue Bash erneut geöffnet und es sieht fast so aus, als wäre nichts passiert, genau wie in der alten.

Dieser Ansatz hat einen Fehler: Sie verlieren die Variablenzuweisungen, die Sie zuvor eingegeben haben. Vielleicht können wir daran arbeiten. Aber wenn Sie damit kein Problem haben, ist das das Problem.

Sie können diesen Code trotzdem Ihren Bedürfnissen entsprechend ändern.

verwandte Informationen