如何将文件的内容插入到每个文件列表中?

如何将文件的内容插入到每个文件列表中?

我有 2 个文件,一个包含文本文件列表,另一个包含我想要添加的内容。

我似乎无法在 Bash 脚本中使用该变量。

脚本如下:

for name in $(cat /home/stuff/list)
do 
  keysss=`cat /home/stuff/test`
  sed -i "27i $keysss " $name
done

这样就会出错。我试过其他方法来打印单词,但我想将其内容打印到文件中

ps. 文件包含 CA 根证书

答案1

您不需要将文件读入变量并使用i命令插入内容(在某些情况下这会失败,例如包含换行符/需要转义),而应该使用命令r直接附加文本:

for name in $(cat /home/stuff/list); do 
  sed -i "27r /home/stuff/test" $name
done

为了避免反引号问题更好的做法是:

while read -r name; do 
  sed -i "27r /home/stuff/test" "$name"
done < /home/stuff/list

或者更简单地说:

xargs -rd '\n' -- sed -i "27r /home/stuff/test" < /home/stuff/list

相关内容