Na página Analisando Scripts do TLDP , o seguinte código é fornecido para análise:
export SUM=0
for f in $(find src -name "*.java"); do
export SUM=$(($SUM + $(wc -l $f | awk '{ print $1 }')))
done
echo $SUM
Eu entendo que ele calcula a soma do número de linhas de todos os arquivos *.java no diretório src
. O que eu não entendo é o motivo do uso da palavra- export
chave, que é descrita assim :
O comando export disponibiliza variáveis para todos os processos filhos do script ou shell em execução.
Como SUM
nunca é acessado por um processo filho, há algum motivo para exportá-lo?
Isso não é necessariamente completamente verdade. Ele calcula a soma do número de linhas de todos os
*.java
arquivos na árvore de diretórios com raizsrc
(ou seja,src
e todos os seus diretórios filhos). Mas falhará para qualquer caminho de arquivo que contenha espaços em branco ou quando houver nomes de diretórios que terminem com.java
.Não.
Eu provavelmente escreveria o trecho de código assim, tornando-o seguro para o nome do arquivo no processo:
Uma solução melhor provavelmente seria esta:
Você está certo, não há necessidade de usar
export
aqui. Há mais problemas com este código embora:E é uma boa prática usar nomes de variáveis em letras minúsculas nos scripts, veja isto para uma explicação.
Em geral, tldp.org não é recomendado, veja isto ou isto . Também vi pessoas não recomendando o tldp.org aqui no StackExchange.