Na verdade, isso pode ter sido respondido aqui: Canal condicional
Essa resposta pega o shell if/then/else
mechanic e o usa para incorporar a lógica dentro do pipeline. Você pode fazer isso também com o operador &&
, mas não é tão limpo de ler, então prefiro if
.
Basicamente, no seu caso, a linha tail
seria assim (observe também a alteração de -z
to -n
):
tail -n +"$HEAD" "$1" |
head -n $((TAIL-HEAD+1)) |
if [ -n "${NUMBER+x}" ]; then cat -n; else cat; fi
(isso pode ter alguns erros, eu não estou tão interessado em programação shell Linux. Mas você entendeu.)