특정 폴더에 특정 확장자를 가진 패키지가 포함되어 있는지 확인해야 하는 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 -