O *.pdf
será expandido pelo shell antes de executar o script, portanto, o script não verá *.pdf
, ele verá os nomes dos arquivos correspondentes diretamente:
$ cat foo.sh
#! /bin/sh
printf "|%s|\n" "$@"
$ touch {1..10}.pdf
$ ./foo.sh 1.pdf
|1.pdf|
$ ./foo.sh *.pdf
|1.pdf|
|10.pdf|
|2.pdf|
|3.pdf|
|4.pdf|
|5.pdf|
|6.pdf|
|7.pdf|
|8.pdf|
|9.pdf|
Dentro de um script bash, você pode usar "$@"
para obter todos os argumentos passados para ele, ou usar ,
, etc. para acessar diretamente o primeiro, segundo, etc. argumento.
Você pode passar o loop por todos os argumentos com um for
:
for i # Or, for i in "$@"
do
echo "Processing argument $i"
done
A saída será:
Processing argument 1.pdf
Processing argument 10.pdf
Processing argument 2.pdf
Processing argument 3.pdf
Processing argument 4.pdf
Processing argument 5.pdf
Processing argument 6.pdf
Processing argument 7.pdf
Processing argument 8.pdf
Processing argument 9.pdf