Sed 在 bash for 循环中不工作

Sed not working inside bash for loop

我想在所有文件夹中递归地替换所有 html 文件中的图像路径。

#!/bin/bash

for image in images/*.png
do

  echo "sed -i .bak -e 's|$image|image2/$image|g' app/www/*.html"
  sed -i .bak -e 's|$image|image2/$image|g' app/www/*.html

done

奇怪的是,当我手动执行命令时:

  sed -i .bak -e 's|images/add.png|image2/add.png|g' app/www/*.html

一切正常,路径被替换。但是在 for 循环中这不起作用,而 echo 部分回显与上面提到的相同的行。

您需要使用 " 而不是 ' 否则不评估 $image

编辑:它在回显中有效,因为 ' 包围的字符串被 " ;)

包围