Ответы пользователя по тегу FreeBSD
  • Как сократить bash скрипт?

    Если список файлов навсегда останется как есть -- то и так все нормально, только лучше бы #!/bin/bash поменять на #!/bin/sh

    А вот если ожидается, что количество или расположение копируемых файлов будет хотя бы иногда меняться -- я бы сделала так:

    #!/bin/sh
    
    for file in \
        /etc/squid/URLs/accessed/access.sorted \
        /etc/squid/URLs/accessed/oper_kass_url \
        /etc/squid/URLs/denied/deny.url.uniq \
        ;
    do
        cp $file /home/security/urls/
    done
    
    for file in \
        /etc/squid/groups/full.dom \
        /etc/squid/groups/limit.dom \
        /etc/squid/groups/oper_kass.dom \
        /etc/squid/groups/unlim.dom \
        ;
    do
        cp $file /home/security/groups/
    done
    
    for file in \
        /etc/squid/squid.conf \
        ;
    do
        cp $file /home/security/urls/
    done


    На скорость работы не влияет, по строчкам получается даже больше, чем в исходном варианте, и существенно больше, чем в предложении gen1s.
    Зато исходные файлы и целевые каталоги разнесены по разным строкам, а это легче читается и проще правится. Если надо добавить копирование еще одного или нескольких файлов -- просто добавляем однотипные строки. Выкинуть файл из копирования -- удалить строку. Ошибиться невозможно ^_^

    На всякий случай: после бекслешей не должно быть пробелов (это способ разбить длинную команду на несколько строк).
    Ответ написан
    Комментировать