Verificando uma saída para extensões específicas na instrução if

1

Estou tentando escrever um script no qual tenho uma instrução if que precisa verificar se uma pasta específica contém um pacote com extensões específicas. Se assim for, então tem que descompactá-lo.

if [ installation = "1" ]; then
    if ls /usr/local/src grep -qF ".tar.gz"; then
        tar -zxvf $package #it has to unpack the package
    elif ls /usr/local/src grep -qF ".tar.bz2"; then
        tar -xvfj $package #it has to unpack the package
    fi
    ./configure
elif [ installation = "2" ]; then
    dpkg -i $package #it has to install the deb package
fi

Pode ser escrito dessa maneira?

O $package não é usado, mas eu escrevi para mostrar o que quero dizer. Eu não sei como informar que tem que descompactar / instalar a pasta fundada com a extensão .tar.gz ou .tar.bz2 ou .deb

    
por Hudhud 12.10.2016 / 16:29

2 respostas

1

algo assim?

 #!/bin/bash

cd /usr/local/src
    if [ installation = "1" ]; then
        for package in *.tar.gz
        do
            tar -zxvf "${package}"
        done

        for package in *.tar.bz2
        do
            tar -xvfj "$package" #it has to unpack the package
        done
        ./configure
    elif [ installation = "2" ]; then
        dpkg -i "$package" #it has to install the deb package
    fi
    
por 12.10.2016 / 16:33
0

Você poderia usar algo assim.

if [ installation = "1" ]; then
    for package in *.tar.*
    do
        tar -xvf ${package} # Unpack (Let tar detect compression type)
    done
    ./configure
elif [ installation = "2" ]; then
    dpkg -i ${deb_package} #it has to install the deb package
fi

Não há necessidade de detectar manualmente o tipo de compactação por meio de ls / grep hacks.

The only case when you have to specify a decompression option while reading the archive is when reading from a pipe or from a tape drive that does not support random access. However, in this case GNU tar will indicate which option you should use. For example:

$ cat archive.tar.gz | tar tf -
tar: Archive is compressed.  Use -z option
tar: Error is not recoverable: exiting now

If you see such diagnostics, just add the suggested option to the invocation of GNU tar:

$ cat archive.tar.gz | tar tzf -

- 8.1.1 Criando e lendo arquivos compactados

    
por 12.10.2016 / 16:46