Я пытаюсь сделать цикл for для JPG-изображений, чтобы добавить их в 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
Я хочу, чтобы цикл for заменил ${file} таким образом, что первое изображение центрировано, второе изображение справа, а третье изображение осталось. Затем четвертое изображение центрируется, пятое - справа, а шестое - слева. И так далее, пока все изображения не будут помещены в таблицу. Поэтому в основном измените содержимое кота для каждого 3 файла в цикле. Есть ли способ сделать это?
Держите подсчет и проверьте 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 и стили, используемые здесь.
Держите подсчет и проверьте 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 и стили, используемые здесь.
Держите подсчет и проверьте 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 и стили, используемые здесь.
Держите подсчет и проверьте 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 и стили, используемые здесь.