Assumindo - como sua própria linha de comando sugere - perl
' rename
implementation (um script de exemplo fornecido com perl
desde a versão 3 em 1989 e geralmente incluído como um comando em muitos sistemas operacionais, às vezes como uma regravação com extensões separadas do pacote perl
like este ), às vezes chamado de prename
em algumas distribuições Linux onde rename
é de outra forma o de util-linux
, você pode usar o ambiente:
STRING=$characters_to_remove_inputted_by_the_user rename 's/\Q$ENV{STRING}\E//g' ./*
Acima, o conteúdo da variável $characters_to_remove_inputted_by_the_user
shell é passado como o valor da variável STRING
ambiente que perl
recupera com $ENV{STRING}
.
Como alternativa, você pode usar o% especialexport
shell embutido para que essa variável shell seja passada no ambiente de cada comando executado, incluindo rename
:
export characters_to_remove_inputted_by_the_user
rename 's/\Q$ENV{characters_to_remove_inputted_by_the_user}\E//g' ./*
Os \Q
/ \E
devem garantir que $STRING
seja tratado como uma string fixa e não como uma expressão regular. Se você quer que seja tratado como um regexp, é só:
REGEXP=$characters_to_remove_inputted_by_the_user rename 's/$ENV{REGEXP}//g' ./*
Evite coisas como:
rename "s/$characters_to_remove_inputted_by_the_user//g" ./*
Acima, o conteúdo da variável shell é expandido pelo shell antes de chamar rename
, de modo que poderia equivaler a uma vulnerabilidade de injeção de comando, pois o valor da variável seria interpretado como perl
code (por exemplo, um valor como //;system("reboot");s/
).