将SED集成到Bash循环中时出错

将SED集成到Bash循环中时出错,bash,sed,cat,Bash,Sed,Cat,我写的bash脚本有问题。该命令在SED之前一直有效,我不确定我做了什么错误。HAL是我试图替换的文本文件中的变量。有什么想法吗 for i in $( cat LIST.txt) do sed s/HAL/i/ <~/test/template.txt > new$i.txt done 给出的错误是意外标记sed附近的语法错误,然后给出sed行 我认为您缺少for部分和do之间的分号 如果您想用$i替换,您可能希望您的sed行如下所示: 因为$cat foo.txt中的i

我写的bash脚本有问题。该命令在SED之前一直有效,我不确定我做了什么错误。HAL是我试图替换的文本文件中的变量。有什么想法吗

 for i in $( cat LIST.txt) do 
 sed s/HAL/i/ <~/test/template.txt > new$i.txt
 done

给出的错误是意外标记sed附近的语法错误,然后给出sed行

我认为您缺少for部分和do之间的分号

如果您想用$i替换,您可能希望您的sed行如下所示:


因为$cat foo.txt中的i绝对是迭代文件中的行的错误方法。请参见BashFAQ 001:…也就是说,您并不是说当它到达sed表达式时它是如何失败的,那么我们应该如何知道需要修复什么?…另外,请引用您的扩展:>new$i.txt将在>new$i.txt失败的地方成功…无论如何,这个问题无法回答,因为它没有说明特定的错误,与问题相反,直到。您编写的sed调用只是用i替换任何出现的HAL。也许你的意思是sed-es/HAL/${i}/?
for i in $(cat LIST.txt); do 
    sed s/HAL/i/ <~/test/template.txt > new$i.txt
done
while read i; do
    # Are you sure you don't want to substitute with the variable (`$i`
    # in this case) instead of "i" in the line below?
    sed s/HAL/i/ < ~/test/template.txt > new$i.txt
done < LIST.txt
sed "s/HAL/$i/" < ~/test/template.txt > new$i.txt