Die $ 1.gz ist in dem Ordner vorhanden, es kann jedoch nicht auf eine solche Datei oder ein solches Verzeichnis zugegriffen werden

361
Vicky

Ich habe ein Skript, das besagt

gzip -cN "$1" > "$1.gz" | ls -l "$1.gz" | awk '' 

Ich führe es mit einem Argument von aus ffund erhalte die Fehlermeldung

ls: cannot access ff.gz: No such file or directory 

Aber wenn ich anschließend ls -l(manuell, von der Shell-Eingabeaufforderung) aus laufe, sehe ich, dass ff.gzes da ist. Worin besteht das Problem?

0

1 Antwort auf die Frage

1
Scott

Wenn Sie tun

cmd 1  |  cmd 2
dann und laufen mehr oder weniger gleichzeitig. Wenn Sie ein Multi-CPU-System haben, laufen sie möglicherweise gleichzeitig. In jedem Fall laufen sie jedoch gleichzeitig, wobei die genaue Planung durch Faktoren bestimmt wird, die zu komplex sind, um eine Vorhersage zu ermöglichen.cmd1cmd2

Dein ist und dein ist . Daher wird möglicherweise die Ausführung gestartet, bevor die Datei erstellt wird.cmd1gzip -cN "$1" > "$1.gz"cmd2ls -l "$1.gz"lsgzip"$1.gz"

lsliest nicht von seiner Standardeingabe, daher macht das Pipeing keinen Sinn. Du willst es wahrscheinlich tun

gzip -cN "$ 1"> "$ 1.gz" && ls -l "$ 1.gz" | awk ''
dh, führen Sie das aus gzip, und dann, wenn es erfolgreich ist, führen Sie das aus ls -l.