首页 > 自动化运维 > DevOps > shell加减乘除运算
1.当前日期相加减
[oracle@test03 ~]$ date -d "2012-04-10 -1 day " +%Y-%m-%d -- 指定固定日期减1天
2012-04-09
[oracle@test03 ~]$ date -d "2023-02-10 -1 day " +%Y-%m-%d
2023-02-09
[oracle@test03 ~]$ date -d "2023-02-10 +1 day " +%Y-%m-%d
2023-02-11
[oracle@test03 ~]$ date -d "2023-02-10 -1 week " +%Y-%m-%d
2023-02-03
[oracle@test03 ~]$ date -d "2023-02-10 -1 month " +%Y-%m-%d
2023-01-10
[oracle@test03 ~]$ date -d "2023-02-10 -1 year " +%Y-%m-%d
2022-02-10
[oracle@test03 ~]$ user_current_time=2022-03-03
[oracle@test03 ~]$ date -d "$user_current_time -1 day " +%Y-%m-%d --使用变量形式日期相减
2022-03-02
[oracle@test03 ~]$
2.指定两个日期加减运算(两个日期相减)
[oracle@test03 ~]$ user_current_time=`date +%F`
[oracle@test03 ~]$ user_expire_time=2023-07-12
[oracle@test03 ~]$ expire_time=`expr '(' $(date +%s -d "$user_expire_time") - $(date +%s -d "$user_current_time") ')' / 86400`
[oracle@test03 ~]$ echo $expire_time
152
[oracle@test03 ~]$
3.整数相加减,相乘除(使用expr)
[oracle@test03 ~]$ pga_size=4
[oracle@test03 ~]$ pga_sum=8
[oracle@test03 ~]$ c=`expr $pga_size + $pga_sum / 2 ` --expr不支持浮点数,bc支持浮点数
[oracle@test03 ~]$ echo $c
8
[oracle@test03 ~]$
4.浮点数相乘(使用echo ""|bc)
[oracle@test03 ~]$ pga_size=3.4
[oracle@test03 ~]$ pga_sum=4.5
[oracle@test03 ~]$ c=$(echo "$pga_size * $pga_sum"|bc)
[oracle@test03 ~]$ echo $c
15.3
[oracle@test03 ~]$
5. 浮点数相除(使用echo ""|bc)
[oracle@test03 ~]$ pga_size=3.4
[oracle@test03 ~]$ pga_sum=4.5
[oracle@test03 ~]$ c=$(echo "scale=2;$pga_size * 100 / $pga_sum"| bc) -- scale=2保留两位小数
[oracle@test03 ~]$ echo $c
75.55
[oracle@test03 ~]$
示例:
if [ `echo "scale=0;$pga_size *100 / $pga_sum"| bc` -le 5 ];then
echo -e "\033[31m--------------------------ORACLE PGA内存严重不正常[低于总内存5%]\033[0m"
elif [ `echo "scale=0;$pga_size * 100 / $pga_sum"| bc` -le 10 ];then
echo -e "\033[33m--------------------------ORACLE PGA内存警告不正常[低于总内存10%]\033[0m"
else
echo "--------------------------ORACLE PGA内存正常[高于总内存10%]"
fi
浮点数比较:
if [ $(echo "5.2 > 2"|bc) = 1 ];then
echo "test"
fi
if [ `echo "$a - $b > 1"|bc` = 1 ];then
echo "test"
fi
6.两数相乘用\转义
[oracle@test03 ~]$ pga_size=4
[oracle@test03 ~]$ pga_sum=8
[oracle@test03 ~]$ c=`expr $pga_size \* $pga_sum / 2 `
[oracle@test03 ~]$ echo $c
16
[oracle@test03 ~]$
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25854343/viewspace-2934715/ ,如需转载,请注明出处,否则将追究法律责任。