O $ 1.gz existe na pasta, mas disse que não pode acessar, nenhum arquivo ou diretório

0

Eu tenho um script que diz

gzip -cN "$1" > "$1.gz" | ls -l "$1.gz" | awk '{print $5}'

Eu corro com um argumento de ff, e recebo a mensagem de erro

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

Mas quando eu subseqüentemente corro ls -l (manualmente, a partir do prompt do shell), eu vejo isso ff.gz existe. Qual é o problema?

Vicky
fonte

Respostas:

1

Se você fizer

 cmd  1   |   cmd  2 
então cmd 1 e cmd 2 correr mais ou menos ao mesmo tempo. Se você tiver um sistema multi-CPU, eles podem ser executados simultaneamente. Mas em qualquer caso, eles serão executados simultaneamente com a programação precisa sendo determinada por fatores muito complexos para permitir a previsão.

Seu cmd 1 é gzip -cN "$1" > "$1.gz" e seu cmd 2 é ls -l "$1.gz". Portanto, o ls pode começar a correr antes do gzip cria o "$1.gz" Arquivo.

ls não lê a entrada padrão, por isso não faz sentido. Você provavelmente quer fazer

gzip -cN "$1" > "$1.gz"   & amp; & amp;  ls -l "$ 1.gz" | awk '{print $ 5}' 
ou seja, execute o gzipe, em seguida, se tiver êxito, execute o ls -l.
Scott
fonte