【发布时间】:2017-08-27 13:16:53
【问题描述】:
我有以下bash 脚本,它对找到的每个图像重复。它需要遍历所有 html、css 和 js 文件,并替换该文件中所有出现的图像。
for image in app/www/images-theme-dark/*.png
do
echo "installing icon" $image
# extract filename from iconpath
iconfile=$(basename $image)
iconPath="images/"$(basename $image)
# replace paths in all files containing icon paths
find app/www -type f \( -name "*.html" -or -name "*.css" -or -name "*.js" \
-or -name "*.appcache" \) \
-exec sed -i '' -e 's|$iconPath|images-theme-dark/$iconfile|g' "{}" \;
done
但是,当我运行脚本 sed 时:
sed: can't read : No such file or directory
在 StackOverflow 上我找到了 sed: can't read : No such file or directory 但我已经在 {} 周围引用了引号
当我回显sed 命令并在命令行上手动执行时,没有错误。
我在 Raspbian GNU/Linux 8.0 (jessie) 上使用 GNU sed v4.2.2
有人知道这里有什么问题吗?
【问题讨论】:
-
sed -i后面的''是什么? -
请在您的问题中添加操作系统和 sed 版本。
-
@osi:
-i的语法是 GNU sed 和 mac os 中的 sed 之间的区别之一。 -
@osi:
-i表示in-place,即直接在文件中编辑。-i ''表示就地编辑名称为空字符串的文件。由于您可能实际上没有名称为空字符串的文件,sed抱怨它无法读取它。