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
_
このような:
[[ $supportLeft -lt 1 || $yearCompare -gt 0 ]]
これらおよびその他の関連する演算子はman test
にあります
これが助けになるかどうかはわかりませんが、「bashのintとintを比較する」を検索したとき、この質問はGoogleで高かったです
0を追加することにより、文字列をbashのintに「キャスト」できます
NUM="99"
NUM=$(($NUM+0))
NULLも扱う必要がある場合、これはうまく機能します
NUM=""
NUM=$(($NUM+0))
文字列にスペースが含まれていないことを確認してください。
NUM=`echo $NUM | sed -e 's/ //g'`
(Solaris 10でテスト済み)
これはうまくいくようです:
if (( $supportLeft < 1 )) || (( $yearCompare > 0 ))
または
if (( $supportLeft < 1 || $yearCompare > 0 ))