Wie übergebe ich einen Befehl an ein in der Shell geöffnetes Programm?

Wie übergebe ich einen Befehl an ein in der Shell geöffnetes Programm?

Ich schreibe ein Shell-Skript, um ein Programm mit Jboss-cli unter Linux Ubuntu automatisch bereitzustellen. Ich muss die Jboss-CLI-Schnittstelle öffnen und einige Befehle ausführen, aber ich möchte dies automatisch tun. So sieht es aus

cd /opt/jboss/bin
./jboss-cli.sh --connect

die obige Zeile öffnet die JBoss-Befehlszeile. Ich möchte in der Lage sein, einen Befehl an das geöffnete Programm zu senden, wie: undeploy FlcErp.ear

Ich habe versucht, es wiederzugeben und reinen Text einzugeben, aber nichts wird ausgeführt, bis das Jboss-Programm fertig ist.

Ich habe es auch versucht ./jboss-cli.sh --connect undeploy "FlcErp.ear", aber es liest sich "FlcErp.ear"wie ein Befehl

Antwort1

Wenn jboss-cli.shvon der Standardeingabe gelesen wird, können Sie den Befehl dorthin weiterleiten:

echo 'undeploy FlcErp.ear' | ./jboss-cli.sh --connect

Um mehrere Befehle auszuführen, können Sie mehrere echoBefehle verwenden.

{ echo 'undeploy FlcErp.ear'; echo 'other gommands'; echo 'go here'; } | ./jboss-cli.sh --connect

aber ein Here-Doc ist normalerweise einfacher:

./jboss-cli.sh --connect <<EOF
undeploy FlcErp.ear
other commands
go here
EOF

verwandte Informationen