Ausführung einer Liste von Befehlen anhalten

Ausführung einer Liste von Befehlen anhalten

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/bashso:

cat commands | /bin/bash

Wie kann ich nun die Ausführung mittendrin anhalten und auf die Benutzereingabe warten? Die Verwendung von readscheint 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 bashwird, wird sie über die Standardeingabe von weitergeleitet bash. In diesem Fall readliest das Lesen von Standardeingabe aus dem weitergeleiteten Datenstrom und nicht vom Terminal. Es verbraucht echo 'ok'. Indem Sie die Datei als Argument angeben, bashfü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.shund ./script.sh?

verwandte Informationen