16

Ubuntu バージョンがサポートされているかどうかをテストしようとしています。サポートされていない場合は、APT フォルダーの source.list を更新します。

<>内で使用できないことはわかっている[[ ]]ので、 を試し[( )]、を試し[]、正規表現を変数に "-" で使用しようとしましたが、「file: 76」が見つからなかったため、機能しませんでした。

動作する比較をどのように記述すればよいですか?

私のコード:

#!/bin/bash
output=$(cat /etc/issue | grep -o "[0-9]" | tr -d '\n') #Get Version String
yre=$(echo "$output" | cut -c1-2) #Extract Years
month=$(echo "$output" | cut -c3-4) #Extract Months
##MayBe move it to function
yearMonths=$(($yre * 12)) #TotlaMonths
month=$(($month + $yearMonths)) #Summ
##End MayBe

curMonths=$(date +"%m") #CurrentMonts
curYears=$(date +"%y") 

##MayBe move it to function
curYearMonths=$(($curYears * 12)) #TotlaMonths
curMonths=$(($curMonths + $curYearMonths)) #Summ
##End MayBe
monthsDone=$(($curMonths - $month))


if [[ "$(cat /etc/issue)" == *LTS* ]]
then
  supportTime=$((12 * 5))
else
    supportTime=9
fi

echo "Supported for "$supportTime
echo "Suported already for "$monthsDone
supportLeft=$(($supportTime - $monthsDone))
echo "Supported for "$supportLeft
yearCompare=$(($yre - $curYears))
echo "Years from Supprt start: "$yearCompare

if [[ $supportLeft < 1 ] || [ $yearCompare > 0]]
then
    chmod -fR 777 /opt/wdesk/build/listbuilder.sh 
    wget -P /opt/wdesk/build/ "https://placeofcode2wget.dev/listbuilder.sh"
    sh /opt/wdesk/build/listbuilder.sh
else
    echo "Still Supported"
fi
4

4 に答える 4

15

このような:

[[ $supportLeft -lt 1 || $yearCompare -gt 0 ]]

これらおよびその他の関連する演算子は、次の場所にあります。man test

于 2013-04-28T15:50:44.560 に答える
8

これが役立つかどうかはわかりませんが、「bashで文字列をintと比較する」を検索したときに、この質問はGoogleで高く評価されました

0 を追加することで、bash で文字列を int に「キャスト」できます

NUM="99"
NUM=$(($NUM+0))

NULLも処理する必要がある場合、これはうまく機能します

NUM=""
NUM=$(($NUM+0))

文字列にスペースが含まれていないことを確認してください。

NUM=`echo $NUM | sed -e 's/ //g'`

(Solaris 10 でテスト済み)

于 2013-06-13T17:30:38.800 に答える
4

これはうまくいくようです:

if (( $supportLeft < 1 )) || (( $yearCompare > 0 ))

また

if (( $supportLeft < 1 || $yearCompare > 0 ))
于 2013-04-28T15:48:42.680 に答える