shell加減乘除運算

z597011036發表於2023-02-10

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部落格 ” ,連結:http://blog.itpub.net/25854343/viewspace-2934715/,如需轉載,請註明出處,否則將追究法律責任。

相關文章