O que essa sintaxe significa “$ {i% .avi} .mp4” [duplicado]

2

Encontrei esse tipo de sintaxe em algum lugar da Web:

for i in *.avi
do 
    ffmpeg -i "$i" "${i%.avi}.mp4"
done

como é que este "${i%.avi}.mp4" e como posso usá-lo?

    
por Patryk 12.01.2013 / 19:26

2 respostas

3

Isso é conhecido como uma expansão de parâmetro. Tudo à direita de .avi é removido e .mp4 é concatenado no resultado.

Se $i for "foo.avi", o resultado será "foo.mp4". O BashFAQ 73 tem alguns bons exemplos de outras maneiras de usar expansões de parâmetros para manipulação de strings.

    
por 12.01.2013 / 19:31
0

Ele removerá o sufixo .avi de $i (se presente) e concatenará o resultado com .mp4 .

Isso é chamado de expansão de parâmetro.

Os padrões são descritos aqui: link

Seu shell pode ou não implementar mais deles, mas se isso acontecer, o uso deles não garantirá a portabilidade.

    
por 13.01.2013 / 02:46

Tags