特定のフォルダに特定の拡張子を持つパッケージが含まれていることを確認する必要がある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 -