Enviado em 09/01/2018 - 13:10h
Galera, eu to começando a estudar shell script e pintou uma dúvida, com o seguinte script:i=0
cat /etc/passwd | while read line
do
i=$((i+1))
done
echo $i
i=0
while read line
do
i=$((i+1))
done < /etc/passwd
echo $i
Enviado em 09/01/2018 - 14:47h
Amigo o arquivo tem 29 linhas, o que eu gostaria de saber é porque em um código contabiliza e no outro não. Mas já descobri, no caso do primeiro código é criado um "sub shell" e a variável só é incrementada naquele escopo, aí sair do subprocesso a variável volta a ser a de fora do escopo, ou seja, com o valor inicial.Enviado em 15/01/2018 - 03:59h
Você precisa entender como o shell trata a execução de pipelines e de comandos compostos, especialmente quando há redirecionamento de arquivos.while read arquivo; do
rm -i "$arquivo"
done < /tmp/lista_de_arquivos.txt
exec 3</tmp/lista_de_arquivos.txt # Associa arquivo ao descritor nº 3.
while read -u 3 arquivo; do # Manda o read (e não todo o comando composto!) ler especificamente do descritor nº 3.
rm -i "$arquivo"
done
exec 3<&- # Fecha (desativa) o descritor nº 3.
i=0
exec 3</etc/passwd
while read -u 3 line
do
((++i))
done
exec 3<&-
echo $i
Instalação do Ambiente .NET (#C) no Slackware 15.0
Kali On The Box - Colocando o Kali para rodar no Raspberry Pi
Como contribuir com a atualização de pacotes no Void Linux
Desabilitar o sininho (bell) no terminal
Como encriptar o diretório home do seu usuário
Criando imagens com IA via terminal
Samba4 Erro no Bind(Named) zone XXX.in-addr.arpa/NONE: has no NS records [RESOLVIDO]