Beim Ausführen eines Skripts die ersten x Zeilen ignorieren?

Beim Ausführen eines Skripts die ersten x Zeilen ignorieren?

Ich erstelle ein Skript, das irgendwann von vorne beginnt, indem es sich selbst erneut ausführt exec. Das Problem ist, dass die ersten paar Zeilen nur jedes Mal ausgeführt werden sollen, wenn Sie das Skript selbst starten. Daher frage ich mich, ob ich etwas tun kann, um dies zu beheben. Hier ist ein Beispiel:

echo "welcome"
read yesno

if [[ $something = etc.. ]]; then
whatever
fi

exec ~/bin/script

Dies ist vereinfacht, aber wenn dies mein Skript wäre, würde ich die erste Zeile ( echo) ignorieren wollen. Gibt es eine Option, die execich hinzufügen kann? Ich meine, ich könnte eine Kopie des Skripts erstellen und einfach die erste(n) Zeile(n) weglassen, aber das scheint mir keine gute Lösung zu sein.

Antwort1

Bei einer Variablen besteht das Naheliegendste darin, das Ergebnis der vorherigen Eingabeaufforderung zu übergeben:

if [[ -z "$yesno" ]]; then
    echo "welcome"
    read yesno
fi

if [[ $something = etc.. ]]; then
whatever
fi

# doing it this way makes it exported into the subprocess
yesno=$yesno exec ~/bin/script

Antwort2

Sie können versuchen, eine temporäre Datei in /run abzulegen und beim Start zu prüfen, ob sie existiert. Wenn nicht, können Sie echoen, ob sie existiert, haben Sie sie schon einmal ausgeführt. Und wenn Sie fertig sind, entfernen Sie die Datei.

verwandte Informationen