if 문에서 특정 확장의 출력을 확인하세요.

if 문에서 특정 확장의 출력을 확인하세요.

특정 폴더에 특정 확장자를 가진 패키지가 포함되어 있는지 확인해야 하는 if 문이 있는 스크립트를 작성하려고 합니다. 그렇다면 포장을 풀어야 합니다.

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

이렇게 써도 되나요?

사용되지는 않았지만 $package무슨 뜻인지 보여드리기 위해 썼습니다. 확장자가 .tar.gz, .tar.bz2 또는 .deb인 생성된 폴더의 압축을 풀거나 설치해야 한다는 것을 어떻게 알 수 있는지 모르겠습니다.

답변1

이 같은?

 #!/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

답변2

이런 것을 사용할 수 있습니다.

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

압축 유형을 수동으로 감지하기 위해 해킹을 ls거칠 필요가 없습니다 .grep

아카이브를 읽을 때 압축 해제 옵션을 지정해야 하는 유일한 경우는 무작위 액세스를 지원하지 않는 파이프 또는 테이프 드라이브에서 읽을 때입니다. 그러나 이 경우 GNU tar는 어떤 옵션을 사용해야 하는지 알려줍니다. 예를 들어:

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

이러한 진단이 표시되면 GNU tar 호출에 제안된 옵션을 추가하세요.

$ cat archive.tar.gz | tar tzf -

--8.1.1 압축된 아카이브 생성 및 읽기

관련 정보