无法在我的shell脚本中使用perl命令搜索和替换文件

无法在我的shell脚本中使用perl命令搜索和替换文件,shell,Shell,有一组文件位于不同的路径中,我想对其进行密码模式解析,并使用新的密码模式对其进行更改 例如,我有一个文件pass.lst它包含密码列表 oldpassword1/newpassword1 oldpassword2/newpassword2 oldpassword2/newpassword2 我还有一个包含文件路径列表的文件 path.lst: $Home/test.xml $Home/demo.sh etc.... 现在,我想制作一个主文件,其中包含一个脚本,该脚本从文件中读取输入并执行我的

有一组文件位于不同的路径中,我想对其进行密码模式解析,并使用新的密码模式对其进行更改

例如,我有一个文件
pass.lst
它包含密码列表

oldpassword1/newpassword1
oldpassword2/newpassword2
oldpassword2/newpassword2
我还有一个包含文件路径列表的文件
path.lst

$Home/test.xml
$Home/demo.sh
etc....
现在,我想制作一个主文件,其中包含一个脚本,该脚本从文件中读取输入并执行我的工作 这是我正在使用的脚本

  for i in `cat pass.lst`
     `do`
        for j in `cat path.lst`
          do
             perl -p -i -e 's/$i/g' $j
         done 
         done
但它给了我这个错误

Substitution replacement not terminated at -e line 1.
任何建议和帮助都将不胜感激。

#/usr/bin/env bash
#!/usr/bin/env bash
while IFS=/ read -r orig replacement; do
  orig="$orig" replacement="$replacement" \
    xargs -d $'\n' \
    perl -p -i -e 's/$ENV{orig}/$ENV{replacement}/g' \
    <path.lst
done <pass.lst
而IFS=/read-r原始替换;做 orig=“$orig”替换=“$replacement”\ xargs-d$'\n'\ perl-p-i-e's/$ENV{orig}/$ENV{replacement}/g'\
我试图修复您的脚本和格式错误。请查收。你为什么用这么多`?请粘贴脚本并修复最常见的错误。该文件确实包含文本
$Home
,或者包含这些文件的文件夹按字面意思命名为
$Home
,或者是否希望以某种方式将
$Home
扩展为shell变量?。该文件包含$Home,因为它引用了主路径,其余看起来不错!感谢您所做的编辑,现在看起来还可以。像
i=“$i”perl-p-i-e's/$ENV{i}/g'$j”
这样的东西将更接近正确(了解perl的人将能够给您在
ENV
哈希中查找字符串的实际语法)。@CharlesDuffy将尝试这样做