Você chama seu script com
./script file_*.jpg jpg bak
Mas *
é expandido antes de ser passado para o script. Supondo que você tenha os arquivos file_1.jpg
, file_2.jpg
e file_3.jpg
em sua pasta, isso é o que é chamado:
./script file_1.jpg file_2.jpg file_3.jpg jpg bak
, o que significa que ${1} = file_1.jpg
, ${2} = file_2.jpg
e ${3} = file_3.jpg
.
Pode ser melhor escrever o seu script de forma tal que (no seu exemplo): ${1} = jpg
e ${2} = bak
. Então você pode armazenar essas variáveis em seu script, invocar shift 2
para se livrar delas e fazer um loop sobre todos os argumentos posicionais simplesmente usando
for file; do
# do something
done