Sed不在bash for循环中工作

时间:2017-03-12 20:38:24

标签: bash sed quoting

我想在所有文件夹中递归替换所有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循环中,当回声部分回响上面提到的相同行时,这不起作用。

1 个答案:

答案 0 :(得分:2)

你需要使用“而不是” 否则,不评估$ image

编辑:它在回声中起作用,因为'包围的字符串被“;”

包围