Если вы делаете
cmd1 | cmd2 …
затем
cmd 1
и
cmd 2
работают более или менее одновременно.
Если у вас многопроцессорная система, они могут работать одновременно.
Но в любом случае они будут выполняться одновременно, причем точное планирование будет определяться слишком сложными факторами, чтобы их можно было прогнозировать.
Ваш cmd1
- это gzip -cN "$1" > "$1.gz"
а ваш cmd2
- это ls -l "$1.gz"
.
Следовательно, ls
может запуститься до того, как gzip
создаст файл "$1.gz"
.
ls
не читает со своего стандартного ввода, поэтому добавление в него смысла не имеет.
Вы, вероятно, хотите сделать
gzip -cN "$1" > "$1.gz" && ls -l "$1.gz" | awk '{print $5}'
то есть, запустите
gzip
, а затем, если это удастся, запустите
ls -l
.