Quando você digita ./remove_cc *
, o shell altera para ./remove_cc file1.txt file2.txt file3.txt etc
e executa seu script dessa maneira. Seu script está olhando apenas para $1
, o primeiro parâmetro (file1.txt).
A maneira mais geral de fazer isso é fazer o loop de cada parâmetro por vez. "$@"
se expande para a lista de todos os parâmetros e podemos usar for
para fazer um loop sobre eles.
for n in "$@" ; do
sed -ie 's/@r//g' "$n"
...
done
Nesse caso específico, como sed
terá vários nomes de arquivos, você poderá simplificar:
sed -ie 's/@r//g' "$@"
Observe que prestar atenção às cotações é importante ao escrever scripts de shell. Sem as aspas, por exemplo, o script não funcionaria em um arquivo chamado My Text File.txt
.