for i in ` seq $#`
do
echo "$1 = `expr "$1" : '.*'`"
shift
done
echo obshee chislo: $i
Shell скрипты
здесь).
Таким образом будем создавать этакий сборник рецептов на все случаи жизни.
Если вы не нашли нужный вам скрипт здесь, его можно поискать в книге Менделя Купера. На данный момент наиболее полно shell скриптинг описан в книге - Mendel Cooper. Advanced Bash-Scripting Guide. (электронную версию книги от 02.04.08 можно скачать здесь).
Как оформляем скрипты?
Пишем короткое описание что скрипт делает, при необходимости описание входных и выходных параметров. Можно описать особенности работы.
Приводим код скрипта заключенный в теги [ highlight=bash] [ /highlight] (без пробелов в начале).
Ниже примитивный скрипт в качестве примера оформления.
Backup файлов в текущем каталоге.
Скрипт создает архив всех файлов с расширением *.c и *.h начиная от текущей папки рекурсивно.
[highlight=bash]#!/bin/bash
find . -name "*.[ch]" -print0 | xargs -0 zip backup_`date '+%F'`.gz > /dev/null
[/highlight]
В данной теме можно публиковать ваши полезные shell скрипты (вводный обзор что это --
Таким образом будем создавать этакий сборник рецептов на все случаи жизни.
Если вы не нашли нужный вам скрипт здесь, его можно поискать в книге Менделя Купера. На данный момент наиболее полно shell скриптинг описан в книге - Mendel Cooper. Advanced Bash-Scripting Guide. (электронную версию книги от 02.04.08 можно скачать здесь).
Как оформляем скрипты?
Пишем короткое описание что скрипт делает, при необходимости описание входных и выходных параметров. Можно описать особенности работы.
Приводим код скрипта заключенный в теги [ highlight=bash] [ /highlight] (без пробелов в начале).
Ниже примитивный скрипт в качестве примера оформления.
Backup файлов в текущем каталоге.
Скрипт создает архив всех файлов с расширением *.c и *.h начиная от текущей папки рекурсивно.
[highlight=bash]#!/bin/bash
find . -name "*.[ch]" -print0 | xargs -0 zip backup_`date '+%F'`.gz > /dev/null
[/highlight]
Код:
Shell/dual_isp.sh/dual_isp.sh - скрипт для поддержки избыточности интернет канала на сервере. Т.е. при отваливании одного типа интернет соединения в работу задействуется другой. Разработано под OpenBSD, но при наличии рук, растущих из нужного места, можно переделать под любой Linux/Unix.
Shell/iptables/iptables_init.sh - скриптик для автоматической настройки iptables использующий blacklist.txt и whitelist.txt списки хостеров.
Shell/ksh/fun - всякие веселости, показывающие одновременно и легкость и мощь командного интерпретатора Korn Shell.
Shell/ksh/tests - "тестовые" скриптики разработанные на Solaris. Так же при наличии рук все легко переделывается.
Shell/rsync/servers_sync/balance-push.sh - выполняет параллельный перенос содержимого с ведущего сервера (localhost) на клиентские и серверные системы (подойдет для Linux и BSD систем. Для систем Solaris существуют более вразумительные средства, framework's).
Shell/rsync/snapshots/daily_snapshot_rotate.sh - Утилита для создания ежедневных мгновенных копий состояния файловой системы (так же Linux/BSD. Для Solaris бессмысленная трата времени =).
Shell/rsync/snapshots/make_snapshot.sh - Утилита для создания мгновенных копий состояния файловой системы с циклическим сдвигом (тоже Linux/BSD).
Цитата: Jail
[
Shell/rsync/snapshots/daily_snapshot_rotate.sh - Утилита для создания ежедневных мгновенных копий состояния файловой системы (так же Linux/BSD. Для Solaris бессмысленная трата времени =).
Shell/rsync/snapshots/daily_snapshot_rotate.sh - Утилита для создания ежедневных мгновенных копий состояния файловой системы (так же Linux/BSD. Для Solaris бессмысленная трата времени =).
не понял глубокого смысла, при наличии UFS2 snapshots иt snapshot'ов в LVM
Цитата: squirL
не понял глубокого смысла, при наличии UFS2 snapshots иt snapshot'ов в LVM
Смысл достаточно поверхностен. Это ведь топик про Shell скриптинг, а UFS2 snap и LVM snap's этож сам понимаешь другое дело.
Да и UFS2 snapshots и snapshot'ы в LVM смогут разве обеспечить "кросплатформенность" снапшотов при переносе их с Linux на BSD и в обратном направлении, если такая задача появиться в парке машин Linux и BSD. А копии сделанные с помощью pax или gzip помогут. Тот скрипт просто растусовывает снапшоты предварительно сделанные утилитой pax или gzip из cron.
Код:
#!/bin/sh
while true ; do
./programm
sleep 1
done
while true ; do
./programm
sleep 1
done
если есть лучшие варианты, пишите
Цитата: iridum
если есть лучшие варианты, пишите
Конечно есть. Service Management Facility (SMF).
http://www.opensolaris.org/os/community/smf/
http://www.sun.com/bigadmin/content/selfheal/smf-quickstart.jsp
а также - старые, но еще используемые daemontools от djb.
#!/bin/sh
while true ; do
SCRIPT
done
Но Время от времени необходимо остановить выполнения скрипта. Что и не удается:(
Думал вставить скрипт в cron. Все же задача остается.
как можно решить задачу?
Спосибо
мне надо написать скрипт, подсчитывающий количество вводимых символов, если их больше 10 вывести ОК.
Спасибо за помощь!
Код:
echo "Hello! Input your name:";
read b;
c=${#b};
if [ $c -gt 10 ]
then
echo "Length more than 10";
elif [ $c -eq 10 ]
then
echo "Length is 10";
else
echo "Length less than 10"
fi;
echo "Your name is $b length=$c";
read b;
c=${#b};
if [ $c -gt 10 ]
then
echo "Length more than 10";
elif [ $c -eq 10 ]
then
echo "Length is 10";
else
echo "Length less than 10"
fi;
echo "Your name is $b length=$c";
или
Код:
echo "Hello! Input your name:";
for (( c=1; c<=10; c++ ))
do
read -n1 tmp;
name="$name$tmp";
done;
echo "";
echo "Your name is $name";
for (( c=1; c<=10; c++ ))
do
read -n1 tmp;
name="$name$tmp";
done;
echo "";
echo "Your name is $name";
как записывать в массив слова, допустим я ввожу слова и каждое слово записывается в массив, а потом в цикле вывод каждого слова из массива по отдельности, спасибо.
. Напишите скрипт для добавления записей в телефонный справочник и их сортировки. Справочник находится в каталоге, маршрут к которому указывается при запуске скрипта с командной строки