$ 1.gz существует в папке, но он не может получить доступ, нет такого файла или каталога

263
Vicky

У меня есть сценарий, который говорит

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

Я запускаю его с аргументом ff, и я получаю сообщение об ошибке

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

Но когда я впоследствии запускаю ls -l(вручную, из командной строки), я вижу, что ff.gzэто там. В чем проблема?

0

1 ответ на вопрос

1
Scott

Если вы делаете

cmd 1  |  cmd 2 ...
тогда и беги более или менее одновременно. Если у вас многопроцессорная система, они могут работать одновременно. Но в любом случае они будут выполняться одновременно, причем точное планирование будет определяться слишком сложными факторами, чтобы их можно было прогнозировать.cmd1cmd2

Твое есть и твое есть . Поэтому запуск может начаться до того, как файл будет создан .cmd1gzip -cN "$1" > "$1.gz"cmd2ls -l "$1.gz"lsgzip"$1.gz"

lsне читает со своего стандартного ввода, поэтому вставка в него смысла не имеет. Вы, вероятно, хотите сделать

gzip -cN "$ 1"> "$ 1.gz" && ls -l "$ 1.gz" | awk ''
то есть, запустите gzip, а затем, если это удастся, запустите ls -l.

Похожие вопросы