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 exec
ich 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.