2016-12-27 8 views
2


Ich habe versucht, ich konnte keine Antwort auf meine Frage bekommen, vielleicht weil ich nicht sicher bin, wie ich es richtig fragen soll, also entschuldige ich mich im Voraus.
Ich versuche Kette von Befehlen in Bash-Skript zum Beispiel auszuführen:Linux - Befehl mit CLI-Programm ausführen

run mysql > type help > exit 

[email protected]:# mysql 
mysql> help 
mysql> exit 
[email protected]:# 

Wie ich dies in Bash-Skript erreichen kann?

Ich habe versucht, Operanden ||, & &,; all dies zB:

#!/bin/bash 
mysql || help || exit 

Hat nicht funktioniert. Es führt Befehle nacheinander aus.

+0

Meinen Sie wollen Sie eine Reihe von MySQL-Befehlen in Reihenfolge ausführen? –

Antwort

6

können Sie einen heredoc verwenden, um einen Text übergeben, die der Befehl gelesen wird, als ob es sich um eine Datei waren:

mysql <<EOF 
help 
exit 
EOF 

, in bash Alternativ können Sie herestring verwenden, die eine ähnliche Wirkung wie Rohrleitungen erreicht Standardeingabebefehle über ohne zusätzlichen Subshells zu erstellen:

mysql <<< $'help\nexit' 
# or on other shells 
printf 'help\nexit\n' | mysql 

Beachten sie, dass die exit nicht wirklich notwendig ist, wie mysql beendet, wenn es sowieso aus Eingabe läuft.

3

Versuchen Sie Folgendes:

mysql << EOF 
help 
exit 
EOF 

Dies wird den mysql-Befehl starten dann Rohr die Hilfe aus und beende Befehle mysql stdin, die sie als Eingabe effektiv die gleiche ist direkt

2

Es klingt wie das, was man‘ Bei dem Versuch, dies zu tun, werden eine Reihe von MySQL-Befehlen in der richtigen Reihenfolge ausgeführt.

Der von anderen erwähnte Heredoc-Ansatz ist der Weg in einem Shell-Skript.

Vielleicht möchten Sie nur die gleichen MySQL-Befehle über die Befehlszeile ausführen. Wenn dies der Fall ist, verwendet das Befehlszeilentool von MySQL als Standardargument eine Datei, die Befehle wie help und andere SQL-Befehle enthält.

  1. Erstellen Sie eine Datei (Say myfile.sql) und bearbeiten Inhalt:

    help 
    select * from mytable 
    
  2. Speichern

  3. Pass Datei Datei zu mysql:

    mysql myfile.sql 
    

Es gibt kein müssen Sie anrufen exit