对每个文件执行不同操作的For循环

他在学习

我正在尝试为JPG图像创建一个for循环,以将它们添加到具有每个图像不同属性的html代码中。我希望能够更改每三个图像的html代码的内容。这是当前代码:

for file in *.jpg
do
cat >> page.html << _EOF
<table class="super-centered"><tr><td style="width:100%;height:100%;" align="center" valign="middle" > <img alt="" src="${file}"> </td></tr></table>
<table class="super-centered"><tr><td style="width:100%;height:100%;" align="right" valign="right" > <img alt="" src="${file}"> </td></tr></table>
<table> class="super-centered"><tr><td style="width:100%;height:100%;" align="left" valign="left" > <img alt="" src="${file}"> </td></tr></table>
_EOF
done

我希望以${file}第一个图像居中,第二个图像为右,第三个图像为左的方式替换for循环然后将第四个图像居中,将第5个图像居中,然后将第6个图像居中。依此类推,直到所有图像都放置在表格中为止,因此基本上可以为循环中的每3个文件更改cat的内容。有没有办法做到这一点?

muru

保持计数并检查case

i=0
for file in *.jpg
do
    case $i in
        0)
            cat << _EOF
    code one
  </div>
_EOF
            ;;
        1)
            cat << _EOF
    code two
  </div>
_EOF
            ;;
        2)
            cat << _EOF
    code three
  </div>
_EOF
            ;;
    esac
    ((i = (i+1) % 3))
done >> page.html 

请注意,*.jpg最终可能无法获得所需的订单。

现在我们知道所需的输出,我们可以更轻松地生成它:

#! /bin/bash
td_format='
    <td style="width:100%%;height:100%%;" align="%s" valign="%s" > <img alt="" src="%s"> </td>
'

set -- *.jpg

{
    echo '<table class="super-centered">'
    while [[ -n $1 ]]
    do
        echo '  <tr>'
        printf "$td_format" center middle "$1" right right "$2" left left "$3" 
        echo '  </tr>'
        shift 3
    done
    echo '</table>'
}> page.html

在此,td_format变量是的格式字符串printf%s在格式字符串由参数替换printf(和%%通过%)。printf循环遍历参数,所以我们只需要在此处指定一个元素的格式,并printf会遍历参数以打印足够的行。

然后,我们将脚本的参数设置为文件名。现在,我们可以使用$1$2访问这些文件名。在循环中,我使用$1$2$3,然后使用删除这三个文件名shift 3然后,接下来的三个文件名成为$1$2$3分别。因此,我们可以分三批循环。

最后,我没有重定向每个命令,而是将整个代码包装进去{ }并重定向了该组。

您可能应该重新考虑此处使用的HTML和样式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对每个循环中的第一个元素执行不同的操作?

使用make对每个源文件执行操作

为每个循环创建不同的.htm文件

循环文件并执行相同的操作

每个循环的 VBA 没有执行正确的操作

创建一个批处理(.bat)文件以打开多个CMD窗口,每个窗口都对不同的站点执行ping操作

在Gradle构建的installApp阶段对每个文件执行操作

对目录和子目录中的每个文件执行操作

使用exec查找:如何对每个文件执行多步条件操作

如何遍历所有 CSV 文件,打开每个文件并对每个文件执行一些操作?

Python Pandas:为目录中的每个文件执行循环

每个可执行文件的不同链接器选项

inotify等待对文件或目录执行不同的操作

bash脚本循环遍历不同文件并执行命令

循环执行的不同

一个循环中的两个操作与两个循环中执行相同操作的两个循环中的每个循环一个

如何获取每个循环的索引,以及如何执行1个以上的操作?

在每个 in for 循环中每 3 次执行一次操作

遍历li项并设置变量以在每个li项中执行不同的操作

Django使用模型字段中的每个不同值执行某项操作

使用Javascript检测OS类型并针对每个OS执行不同的操作

循环打开每个文件

每个for循环迭代的语句不同

如何循环目录中的文件,并根据每个文件名执行某些任务?

R for循环:为每个循环执行迭代

在多个.xlsx文件上操作,其中数据可以在每个文件的不同列中

分离图像以执行不同的操作

如何使用批处理脚本对目录中的每个文件执行操作

适用于每个操作系统的 Python 可执行文件