Intereting Posts
Почему нет «евроанглийского» языка? Cron arbtirary будние дни диапазон Инструмент для автоматического применения конфигурации RandR при подключении внешнего дисплея Проблемы с командами отсечения FIND Обходной путь для Ctrl-Space в Konsole Есть ли способ заставить программу выводить ошибки на английском языке? Hewlett-Packard ScanJet 2200c на Scientific Linux 6.1 64bit события аудита linux не перешли на go-аудит Как получить список кодов выхода (и / или коды возврата) и значение для команды / утилиты? используйте «mail» для чтения электронной почты из командной строки Пользователь, не являющийся пользователем Samba, не может писать для совместного использования Восстановить atime после vim Инструмент оболочки для «tablify» входных данных Каковы различные способы отображения сообщения в оболочку bash после входа пользователя в систему? спящий режим и своп-разделы на ssd / hdd

Perl-скрипт в bin, который вызывает файл

У меня есть скрипт ~/bin/script

 $ cat ~/bin/script #!/bin/bash perl -pe 's/loremipsum/`cat ~/foo/bar/file.txt`/ge' -i ~/path/to/target.txt 

Сценарий должен заменить каждый экземпляр loremipsum в target.txt содержимым file.txt . Однако выдача script возвращается

 Backticks found where operator expected at -e line 1, at end of line (Missing semicolon on previous line?) Can't find string terminator "`" anywhere before EOF at -e line 1. 

Что не так с моим скриптом?

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

 REPL = `cat ~/foo/bar/file.txt` perl -pe "s/loremipsum/$REPL/ge" -i ~/path/to/target.txt 

Но я думаю, что лучше использовать скрипт perl только для замены строки содержимым файла, потому что содержимое foo / bar / file.txt может повредить вашу команду.

Попробуйте это вместо этого:

 #!/bin/bash perl -pe "s/loremipsum/`cat ~/foo/bar/file.txt`/ge" -i ~/path/to/target.txt 

Похоже, у вас проблемы с сингл-цитатами.