суббота, 10 июля 2010 г.

Bash: циклы

Признаться, для опытных программистов это вещи вполне очевидные, но эту статью я пишу во многом и для себя, потому что то у меня то и дело вылетает из головы, как надо писать циклы на bash.

Итак, получить список файлов, а потом что-нибудь с ними сотворить одной стокой - это, конечно, хорошо, но иногда программеру или администратору не удается достаточно лаконично выразить свои мысли и приходится использовать циклы.

Например, что-то вроде этого.

#!/bin/bash

FOO=(file1 file2 file3)

for ((i=0;i<${#FOO};i++)); do
 some_command ${FOO[${i}]}; 
done

или этого:

for i in `ls`; do 
 some_command $i; 
done

Разумеется, такие команды как ls и find прекрасно могут передать свой вывод через пайп и вместо циклов очень часто можно использовать xargs (либо аргумент -exec в случае с find).

Здесь есть весьма неплохой учебник по bash: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
глава о циклах: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html