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
编辑:它在回显中有效,因为 ' 包围的字符串被 " ;)
包围
我想在所有文件夹中递归地替换所有 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
编辑:它在回显中有效,因为 ' 包围的字符串被 " ;)
包围