Если вы делаете
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 .