Simplifique as linhas de comando no script

0

Eu tenho este script e gostaria de simplificá-lo. Qualquer ajuda seria apreciada:

#!/bin/ash
chmod 775 /path/to/directory
chown -R http:http /path/to/directory
cd /path/to/directory
find . -type d -exec chmod 775 {} \; ; find . -type f -exec chmod 664 {} \;

chmod 775 /path/to/directory1
chown -R http:http /path/to/directory1
cd /path/to/directory1
find . -type d -exec chmod 775 {} \; ; find . -type f -exec chmod 664 {} \;

chmod 775 /path/to/directory2
chown -R http:http /path/to/directory2
cd /path/to/directory2
find . -type d -exec chmod 775 {} \; ; find . -type f -exec chmod 664 {} \;

Obrigado.

    
por Hanuman 10.03.2017 / 04:48

1 resposta

1
#!/bin/ash
for i in \
         '/path/to/directory'  \
         '/path/to/directory1' \
         '/path/to/directory2' \
;do
    chmod 775 "$i"
    chown -R http:http "$i"
    cd "$i" && \
    find . \
       -type d -exec chmod 775 {} \; \
                  -o \
       -type f -exec chmod 664 {} \;
    done

Explicação

Como você está fazendo o mesmo conjunto de operações em dir1 / 2/3, faz sentido movê-las para um loop.

Os dois comandos find também podem ser movidos dentro de um, ajudando nas regras lógicas booleanas.

    
por 10.03.2017 / 05:19