bash中的 For循环不能编辑目录中的所有文件



我有一段不能集成到for循环中的工作代码。代码更新目录中每个.html文件的前51行,以匹配index.html文件。下面是正在运行的代码:

tmp=$(mktemp) && 
{ head -n 51 index.html; tail -n +52 alt.html; } > "$tmp" &&
mv -- "$tmp"  alt.html

这个for循环不起作用:

FILES="/run/media/george/General/testing/*.html"
for f in $FILES;
do
if $f = index.html
then
echo "skip main file"
else    
echo "Updating $f file..."
tmp=$(mktemp) && 
{ head -n 51 index.html; tail -n +52 $f; } > "$tmp" &&
mv -- "$tmp" $f
fi
done

这段代码只是删除所有html文件中的代码。我在这个循环中做错了什么?

通过正确执行if语句并在目标目录中运行脚本而不是使用文件路径来解决问题。下面是工作的新代码:

FILES="*.html"
for f in $FILES;
do
if [ $f = "index.html" ];
then
echo "Skipping index.html"
else    
echo "Updating $f file..."
tmp=$(mktemp) && 
{ head -n 51 index.html; tail -n +52 $f; } > "$tmp" &&
mv -- "$tmp" $f
fi
done

最新更新