Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Não seria melhor `${variavel%.*}` ao invés de usar awk para remover a extensão .jpg?

Buenas!

Tirando o pretexto (legítimo) de demonstrar um dos usos do awk, existe alguma razão para preferir

local imagem_sem_extensao=$(ls $caminho_imagem | awk -F. '{ print $1 }')

ao invés de

local imagem_sem_extensao="${caminho_imagem%.*}"

?

Percebi que a opção com awk falha para arquivos com mais de um "." no nome porque remove tudo a partir to primeiro "." e não apenas a extensão.

Abraço!

2 respostas
solução!

Olá Aluno(a), tudo bem?

Ambas as formas servem para extrair o nome do arquivo sem a sua extensão. A primeira forma usa o comando ls junto com o awk para processar a saída e pegar o nome do arquivo. Já a segunda forma usa uma expansão de parâmetro do shell para fazer a mesma coisa.

A diferença principal é que a segunda forma é mais simples e rápida. Ela usa somente uma operação de substituição de string para retirar a extensão do nome do arquivo. Essa forma também é mais segura, já que não temos que se preocupar com a saída do comando ls ou com o uso do awk.

Em resumo, ambas as formas servem para a mesma coisa, mas a segunda é realmente mais eficiente e segura. Sobre a preferência para uso no curso, não sei te dizer o critério de escolha, mas foi excelente a sua observação.

Parabéns pelo empenho, abraços e bons estudos 😄


Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado pelo esclarecimento, Camila!