首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:将字符串作为整数进行比较

Bash:将字符串作为整数进行比较
EN

Stack Overflow用户
提问于 2013-04-28 23:15:14
回答 4查看 55.4K关注 0票数 16

我正在尝试测试是否支持Ubuntu版本,如果不支持,则更新APT文件夹中的source.list

我知道我不能在[[ ]]中使用<>,所以我尝试了[( )],尝试了[],甚至尝试在变量中使用regexp is there和"-“,但它不起作用,因为它找不到"file: 76”。

我应该如何写出比较的结果呢?

我的代码:

代码语言:javascript
复制
#!/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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-28 23:50:45

如下所示:

代码语言:javascript
复制
[[ $supportLeft -lt 1 || $yearCompare -gt 0 ]]

您可以在man test中找到这些运算符和其他相关运算符

票数 15
EN

Stack Overflow用户

发布于 2013-06-14 01:30:39

我不确定这是不是有帮助,但当我在Google中搜索"compare string to int in bash“时,这个问题在Google中很高。

在bash中,您可以通过添加0将字符串“强制转换”为int类型

代码语言:javascript
复制
NUM="99"
NUM=$(($NUM+0))

如果您还必须处理NULL,则此方法非常有效

代码语言:javascript
复制
NUM=""
NUM=$(($NUM+0))

确保字符串中没有任何空格!

代码语言:javascript
复制
NUM=`echo $NUM | sed -e 's/ //g'`

(在Solaris 10上测试)

票数 7
EN

Stack Overflow用户

发布于 2013-04-28 23:48:43

这似乎起作用了:

代码语言:javascript
复制
if (( $supportLeft < 1 )) || (( $yearCompare > 0 ))

代码语言:javascript
复制
if (( $supportLeft < 1 || $yearCompare > 0 ))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16264311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档