Eu acho que você quase conseguiu. Você pode usar basename "$0"
para find o nome do script de dentro do script e imprime a contagem de linhas de tudo, exceto que
#!/bin/bash
if [ $# -eq 0 ]
then
for k in *
do
if [[ ! -d "$k" && "$k" != 'basename "$0"' ]]
then
wc -l "$k"
fi
done
else
for k in $*
do
wc -l "$k"
done
fi
Tomei a liberdade de
- Usando
k
em vez del
(não recomendado para nomes de variáveis, tenho certeza, embora não consiga encontrar um link (pode ser confundido com1
,I
)) - Usando 4 espaços para recuo em vez de 8. No final, isso é obviamente sua decisão, mas eu diria que 4 são mais legíveis que 8.
- Citando suas variáveis. Altamente recomendado para evitar a divisão de nomes de variáveis com espaços.
- Descartando o
echo
desnecessário como @Serg apontou.
EDIT Eu adicionei colchetes duplos e um teste para diretórios para ignorá-los também para o if
condicional.