gzip -t im Skript nicht ausführbar

D

davinci80

Mitglied
hallo zusammen,

habe ein Problem mit dem Befehl "gzip -t"
wenn ich den Befehl auf dem UNIX-Terminal direkt ausführe, Bsp.:
gzip -t 123.log.gz kommt der korrekte Wert zurück,
sobald ich den Befehl über einen Skript ausführen lasse,
bekomme ich folgende Fehlermeldung:

gzip: compressed data not read from a terminal. Use -f to force decompression.
For help, type: gzip -h

Wie kann ich den Befehl Skript-tauglich machen?!

Danke!
 
Und wieder mal:

Welches OS?
Welche Shell?

Ist das so schwer?

Und nein, es gibt schon lange kein Unix mehr in diesem Sinne..........
 
Hi,

gzip: compressed data not read from a terminal. Use -f to force decompression.
For help, type: gzip -h
!

Hoert sich schwer danach an, dass Du Deinem gzip im script keine Datei mitgegeben hast. Das wird nicht selten durch (versehentliche) null-Variablen fuer die zu verwendende Dateien verursacht, aber dazu muessten wir Dein Script bzw. den entsprechenden Abschnitt sehen und ggf. Dein OS/Shell kennen.

Gruss Daniel
 
Wie schon beim letzten Thread von dir:

Stell bitte eine konkrete Frage mit konkretem Beispiel.
Und lies bitte bitte die Manpage zu deinen verwendeten Programmen.
Auch wenn dein Riesenprojekt so geheimnisvoll ist, es führt kein Weg daran vorbei konkrete Fragen mit den zugehörigen Infos zu stellen.

Abstrakte Fragen führen zu abstrakten Antworten.

Auf deine Frage bezogen würde ich sagen, dein Skript ist fehlerhaft.

Wenn dir diese Auskunft genügt, dann kannst du es ja dabei belassen.

Gruß Wolfgang
PS Ich hoffe du kommst jetzt nicht wieder mit den bereits so ausführlich durchgekauten Scriptversuch vom letzten Thread.
 
gzip -t Dateiname.gz

...Was zum Kuckuck ist an meinen Fragen so schwer zu vertehen Verdammt?!!??

Noch mal!
wenn ich auf der UNIX-Oberfläche den Befehl gzip -t Dateiname.gz eingebe,
kommt der korrekte Wert zurück, nämlich 0.

Gebe ich einen Dateinamen ein, der nicht mit "gz" endet,
kommt eine 1 als Rückgabewert raus, WAS ABSOLUT korrekt ist!

Aber sobald dieser Befehl in einem Skript niedergeschrieben worden ist,
und ich ihn ausführe, kommt die Fehlermeldung (siehe erster Eintrag von mir)?!?!

WAS IST SO SCHWER ZU VERSTEHEN DARAN?!?!?

Ganz einfach, der Befehl funktioniert nicht wenn er per Skript ausgeführt wird,
gibt man es manuell auf der UNIX-Oberfläche ein, funktioniert es. :headup:

Noch genauer geht es nicht!
 
...Was zum Kuckuck ist an meinen Fragen so schwer zu vertehen Verdammt?!!??

Na wenn das nicht so schwer ist, wieso fragst Du dann?


Okay!

wenn ich auf der UNIX-Oberfläche den Befehl gzip -t Dateiname.gz eingebe,
kommt der korrekte Wert zurück, nämlich 0.

Gewöhn Dir mal richtige Bezeichnungen an; Unix existiert in diesem Sinne einerseits nicht mehr, andererseits gibt es zahlreiche unixoide Varianten, die Du etwas genauer spezifizieren musst, damit man überhaupt weiß, in welcher Umgebung Du arbeitest.

Aber sobald dieser Befehl in einem Skript niedergeschrieben worden ist,
und ich ihn ausführe, kommt die Fehlermeldung (siehe erster Eintrag von mir)?!?!

Das wurde bereits verstanden, aber die verwendete shell könntest Du uns doch noch freundlicherweise mitteilen, das verwendete Betriebssystem wäre auch noch sehr interessant.

WAS IST SO SCHWER ZU VERSTEHEN DARAN?!?!?

Schrei'n se mal nich so 'rum hier!

Ganz einfach, der Befehl funktioniert nicht wenn er per Skript ausgeführt wird,
gibt man es manuell auf der UNIX-Oberfläche ein, funktioniert es.

Na da gibt es aber wirklich noch so manche Variable. Das ist wie 'Mein Kraftfahrzeug lässt sich nicht starten! Was für Infos braucht man denn noch, um die Dreckskiste anzuwerfen?' oder so.

Noch genauer geht es nicht!

Na! Eventuell aber vielleicht doch.
 
Und die Antwort hast du auch schon.
Dein Script ist fehlerhaft

Welchen Fehler es hat kann keiner sagen, ohne es gesehen zu haben.

Was ist daran so schwer zu verstehen?

Wolfgang
 
Komm' mal wieder runter, davinci80.

gzip -t <dateiname> funktioniert in der konsole.

Und jetzt kommt der springende Punkt, den Wolfgang und auch ich schon bei Dir bemaengelt haben: ich sehe in meine Glaskugel und unterstelle Dir jetzt einfach mal ganz frech:

Du hast in Deinem Skript etwas wie
Code:
if [ $([b]gzip -t $DATEI[/b] 2>/dev/null) ]; then echo 'hat funktioniert'; fi
stehen.
Und nun unterstelle ich Dir weiter, dass Du die Variable $DATEI vor Deinem gzip-Aufruf falsch bzw. gar nicht gesetzt hast.
Dann interpretiert Dein Skript das genau so:
Code:
if [ $([b]gzip -t[/b] 2>/dev/null) ]; then echo 'hat funktioniert'; fi
Und das wiederum interpretiert gzip so, dass er die zu komprimierenden Daten aus STDIN nehmen soll - was im Regelfall Dein Terminal ist.
Vergleiche Deinen Fehler mal mit der reinen Eingabe von
Code:
gzip -t
in Deiner Konsole.

Was, ich liege falsch? Och schade, naechster bitte raten... aber genau dazu haben wir hier eigentlich gar keine Lust!

Gruss Daniel
 
Code:
wenn ich auf der UNIX-Oberfläche

Du hast immer noch nicht kapiert, das es keine "Unix-Oberfläche" gibt, oder?

Im Übrigen: Wenn ich sowenig Ahnung wie du habe, würde ich mal das Maul nicht so weit aufreißen.

Aber bei dem Ton hat sich die Hilfe eh erledigt.
 
gzip -t

Hallo,

nein, ich habe nur dort stehen:

read Dateiname

gzip -t $Dateiname

echo "$?"

Auf der UNIX-Konsole funktioniert es wunderbar.
Im Skript nicht.
 
Hi,

Und Du gibst bei der Abfrage einen (gueltigen) Dateinnamen ein?
Die Variablennamen sind auch wirklich identisch und enthalten keinen Tippfehler?

Lass Dir mal noch vor dem gzip-Befehl zu debug-Zwecken den Inhalt der Variablen mit
Code:
echo "Dateiname: $Dateiname"
anzeigen (am besten den Variablennamen vom gzip-Aufruf dort hinkopieren), ob sie auch wirklich richtig gesetzt ist.

Etwas anderes kann ich mir - besonders bei dieser Fehlermeldung - nicht vorstellen. Zumindest funktioniert es bei meinem SuSE einwandfrei. Keine Ahnung, ob in diesem Bezug Solaris auch seine Eigenheiten hat, glaube es aber kaum.

Gruss Daniel
 
Zuletzt bearbeitet:
Man sollte sich angewöhnen in Scripten bei Dateiarbeit immer mit diversen test zu arbeiten.

Code:
 # -f abhängig von deiner Version. 
# Für den richtigen Parameter selbst nachsehen.
if [ -f  "$DATEINAME"  ];then
gzip -t "$DATEINAME";
else 
...
fi
 
Dateiprüfung

Hallo Wolfgang,

mit der Dateiprüfung funktioniert es. :)

thx!
 

Ähnliche Themen

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Windows clients können nicht mehr auf lange laufendes System zugreifen

NagiosGrapher 1.7.1 funktioniert nicht

Festplatte stirbt, dd funktioniert nicht

Firewall regel

Zurück
Oben