Perl поиск и замена в скрипте Shell - PullRequest
0 голосов
/ 11 января 2020

Я пытался заменить некоторый текст в файле .txt, используя скрипт оболочки, и perl.

oldKey=123
trimmedNewKey=456

#Export shell variables, so that they can be used by perl
export oldKey
export trimmedNewKey

#Search and Replace
perl -pi -e 's/$ENV{oldKey}/$ENV{trimmedNewKey}/g' AppConstants.txt

Это не удалось, но, с другой стороны, если я использую строку непосредственно для Поисковый параметр, он работает:

perl -pi -e 's/123/$ENV{trimmedNewKey}/g' AppConstants.txt.

Я не являюсь подставным лицом и не могу понять, почему мой «поисковый» параметр не может быть оценен с помощью переменной. Помогите!

1 Ответ

0 голосов
/ 11 января 2020

Попробуйте изменить код на

oldKey=123
trimmedNewKey=456
perl -pi -e "s/$oldKey/$trimmedNewKey/g" AppConstants.txt

Это должно работать, потому что в строке, заключенной в одинарные кавычки, нет расширения переменной и подстановочного знака, как в случае строки, заключенной в двойные кавычки ,

Возможно, возможно, передать некоторые переменные perl, чтобы расширение происходило внутри программы perl, но зачем делать это сложным, если вы можете решить это более простым способом?

...