在shell中實現數據類型的轉換


  -  在python中實現這一功能非常簡單,python中默認就定義了這幾個函數,方便數據類型的轉換,如:str() 、int()

  -  在shell中如何實現數據類型的轉換?在shell中好像也沒有太多的類型

  -  我想,在編寫linux系統的shell腳本時,我們經常會碰到需要進行數據類型的時候,下面是我自己在網上找到的一些方法,整理一下分享一下,希望能對大家有所幫助,哈哈

  • 數字類型轉字符類型

    數據類型轉字符類型,是比較常見的,也是比較容易實現的。大多時候系統能夠自動進行轉換,如:

    # 變量 num 賦值為整數2,但 echo 輸出時已被當成字符串。
    [root@lbcsvr ~]# num=$((1+1))
    [root@lbcsvr ~]# echo ${num}
    # 當然我們也可以強制進行轉換,如:
    # 通過與空字符串進行連接,強化將變量num轉換為字符型
    [root@lbcsvr ~]# echo ${num}""

    上面的方法同樣適用於各種浮點數類型轉字符類型,如:

    [root@lbcsvr ~]# num=`awk 'BEGIN{print 7.01*5-4.01}'`
    [root@lbcsvr ~]# echo ${sum}
    [root@lbcsvr ~]# echo ${sum}""
  • 字符類型轉數值類型

    反過來,字符類型轉數值類型也是可以實現的。

    如:

    # 我發現date命令輸出的雖然是字符串,但是可以直接運算耶
    [root@lbcsvr ~]# date
    2020年 04月 13日 星期一 00:16:13 CST
    [root@lbcsvr ~]# n1=`date | awk -F[:\ ] '{print $7}'`  # 提取字符串並賦值
    [root@lbcsvr ~]# n2=`date | awk -F[:\ ] '{print $7}'`
    [root@lbcsvr ~]# echo $[ n2 - n1 ]
    6
    # 那么如果想要進行字符類型轉數值類型的話,可以這樣:
    [root@lbcsvr ~]# n1=`date | awk -F[:\ ] '{print $7}'`
    [root@lbcsvr ~]# n1=$((n1+0))   # 進行運算n1加上0的結果再賦值給n1,值不會改變
  • 日期型轉數值

    日期型轉數值主要是通過date命令來實現來的。

    命令:date -d "2018-07-24" +%s

    參數 "%s" 的作用是將-d參數后的日期轉換成自UTC時間(1970-01-01 00:00:00)以來所經過的秒數。

    [root@lbcsvr ~]# date -d '2018-07-24' +%s
    1532361600
  • 日期型轉字符

    要日期型轉數值差不多,也是通過date命令來實現來的

    date -d "2018-07-24 12:00:25" +%Y-%m-%d

    將-d參數后的時間,按照“%Y-%m-%d”格式輸入字符串。

    [root@lbcsvr ~]# date -d '2018-07-24' +%Y-%m-%d
    2018-07-24
  • 數值轉日期

    日期型的轉換,都可以通過date命令來完成。

    date -d @1538617600 +%Y-%m-%d

    通過-d將自UTC 時間 (1970-01-01 00:00:00) 以來所經過的1538617600 秒后的時間以格式字符輸出。

    [root@lbcsvr ~]# date -d @1538617600 +%Y-%m-%d
    2018-10-04


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM