
Ich habe eine Datei mit einer Liste von Bash-Befehlen wie den folgenden:
echo 'foobar'
echo 'helloworld'
echo 'ok'
Und ich kann diese Befehle ausführen, indem ich sie einfach weiterleite, etwa /bin/bash
so:
cat commands | /bin/bash
Wie kann ich nun die Ausführung mittendrin anhalten und auf die Benutzereingabe warten? Die Verwendung von read
scheint nicht zu funktionieren.
echo 'foobar'
echo 'helloworld'
read -p 'Press ENTER to continue'
echo 'ok'
Antwort1
Führen Sie es wie folgt aus:
/bin/bash commands
Wenn die Datei per Pipe an weitergeleitet bash
wird, wird sie über die Standardeingabe von weitergeleitet bash
. In diesem Fall read
liest das Lesen von Standardeingabe aus dem weitergeleiteten Datenstrom und nicht vom Terminal. Es verbraucht echo 'ok'
. Indem Sie die Datei als Argument angeben, bash
führen Sie sie trotzdem aus, dieses Mal wird die Standardeingabe jedoch nicht umgeleitet.
Ich nehme an, Sie möchten es so ausführen. Vergleichen SieWas ist der Unterschied zwischen Laufen bash script.sh
und ./script.sh
?