вызывание функций в функции

rsync's исключает опцию, действительно не поддерживает regex, это - больше оболочки globbing сопоставление с образцом.

Если те каталоги довольно статичны, необходимо просто перечислить их в файле и использовании --exclude-from=/full/path/to/file/exclude_directories.txt.

Обновленный для обеспечения примера

Во-первых, Вы просто помещаете каталоги в файл:

find . -type d -regex '.*/[0-9]*$' -print > /tmp/rsync-dir-exlcusions.txt

или

( cat <<EOT
123414
42344523
345343
2323
EOT ) > /tmp/rsync-directory-exclusions.txt

затем можно сделать работу rsync:

rsync -avHp --exclude-from=/tmp/rsync-directory-exclusions.txt /path/to/source/ /path/to/dest/

Вам просто нужен дополнительный шаг для установки текстового файла, который содержит каталоги для исключения, 1 на строку.

Следует иметь в виду, что путь каталогов в задании, их относительный путь к тому, как rsync видит каталог.

-1
20.05.2012, 20:04
3 ответа

Во-первых, не делайте свои имена функций тем же как команды найденный в нормальных системах. mail стандартная команда Unix, я полностью неправильно понял Ваш сценарий, потому что я думал, что Вы использовали его.

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

Затем перенесите всю часть своего сценария, который включает вывод, который будет отправлен по почте внутри {} так, чтобы весь вывод был сплочен, и передайте ЭТО ПО КАНАЛУ к почте вместо этого.

echo "Enter start hour"
read var # stuff to do that won't get output to mail
{
echo "Heading for mail:"
grep stuff...
function_that_outputs
echo "Next heading:"
grep more_stuff...
another_function
} | send_to_administrator

function send_to_administrator () {
    /bin/mail -s "$SUBJET" "$EMAIL"
    echo "Confirm mail sent."
}    
4
28.01.2020, 05:07

`echo $var` совпадает с $var (если $var начинается с a - или концы с символом новой строки или (с некоторыми оболочками) содержат обратные косые черты). Кроме того, если Вы действительно не предназначали для значения $var чтобы использоваться в качестве списка шаблонов шарика, необходимо записать "$var" (если Вы не знаете, что значение не будет содержать специальных символов — но более просто просто всегда двойные кавычки использования вокруг подстановок переменных). Если Вы хотите выполнить два повторения цикла, тот где bar значение var и тот, где bar значение var2, затем просто запишите

for bar in "$var" "$var2"; do
  func "$bar"
done
1
28.01.2020, 05:07
  • 1
    Привет @Gilles, я использовал то, что Вы сказали, и он работал, мне все еще нужны некоторые сохраненные относительно функций. вот строка: elif ["$NUM"-eq "2"]; затем в течение Времени в "var1" "var2"; действительно отправьте сделанную функциональную почту по почте () {для ((t=0; t <2; t ++)), действительно считают "$Time" сделанным/bin/mail-s "$SUBJECT" "$EMAIL" <электронное письмо "эха $msg, Посланное"} - пошлет 1 электронное письмо, но только покажет, что результат первой почты функции grep. () {считает "$Time"/bin/mail-s "$SUBJECT" "$EMAIL" <$msg отзываются эхом,-e "электронное письмо, Посланное"} - отослал бы 2 отдельной электронной почты. как я могу послать электронное письмо с обоими результатами? –  afbr1201 10.07.2011, 10:46
  • 2
    @user774187, не форматируя (никакие новые строки, никакое добавление отступа) это абсолютно нечитабельно. Отредактируйте свой вопрос добавить этот код. И сделайте это выполнимой частью кода, начав elif не имеет никакого смысла. –  Gilles 'SO- stop being evil' 10.07.2011, 12:11
  • 3
    я полностью отредактировал вопрос. я надеюсь, что Вы могли понять то, из-за чего я испытываю затруднения. –  afbr1201 10.07.2011, 13:01

основной функция. их называют тем же путем, Вы звоните затем в основное

-1
28.01.2020, 05:07
  • 1
    Здесь нет никакого основного. Это не программа C. –  Gilles 'SO- stop being evil' 24.12.2013, 19:22

Теги

Похожие вопросы