2017-02-16 2 views
1

Ich bin auf der Suche nach einem numerischen Wert innerhalb der "count" -Variable von meinem SQL ich schrieb. Leider bekomme ich gerade eine Ingres Fehlermeldung. Irgendwelche Ideen, was ich falsch mache?Setzen Sie die Anzahl der Tabellen auf eine Variable im Shell-Skript ..?

Siehe Shell-Script-Code unten:

#!/bin/ksh 
############### 

count=$(sql db_name -s -N "SELECT COUNT(*) FROM temp_table;") 

echo "Table count = $count" 

Siehe Ingres Fehler unten:

Table count = INGRES TERMINAL MONITOR Copyright 2008 Ingres Corporation 
E_US0022 Either the flag format or one of the flags is incorrect, 
    or the parameters are not in proper order. 

Erwartetes Ergebnis:

Table count = 8 
+0

Wenn Sie die Korn-Shell verwenden, verwenden Sie die 'ksh' Tag nicht das Bash-Tag. Egal, das ist kein Shell-Problem; Es gibt ein Problem mit Ihrem SQL-Befehl. – chepner

+1

Haben Sie versucht, 'sql db_name -s -N auszuführen? SELECT COUNT (*) FROM temp_table;" 'um zu sehen, was die Ausgabe außerhalb Ihres Skripts ist? – Fred

Antwort

1

Versuchen Sie folgendes:

=>|Fri Feb 17|01:51:01|[email protected][STATION]:/var/lib/pgsql> ./test.sh 
count ------- 3 (1 row) 

=>|Fri Feb 17|01:51:04|[email protected][STATION]:/var/lib/pgsql> cat test.sh 
#!/bin/bash 

count=$(psql <<EOF 
select count(*) from mdn_2 ; 
EOF 
) 
# Prints the result captured from DB 
echo $count 

=>|Fri Feb 17|01:51:05|[email protected][STATION]:/var/lib/pgsql> 
+0

Ergebnis ist jetzt: "INGRES TERMINALMONITOR Copyright 2008 Ingres Corporation Ingres SPARC SOLARIS Version II 9.2.1 Anmelden Do Apr 20 11:30:40 2017 fortfahren Ausführen... + ----------- - + | col1 | + ------------- + | 8 | + ------------- + (1 Zeile) Ihre SQL-Anweisung (en) haben Ingres Version II 9.2.1 Logout Do Apr 20 11:30:40 2017 " Irgendeine Idee ist, wie ich einfach" 8 "zurückgeben kann? – TCP

+0

Möglich für Sie, den Screenshot hier zu teilen? Ich kann dann überprüfen und antworten. – User9102d82

Verwandte Themen