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 圧縮アーカイブの作成と読み取り

関連情報