shell下如何实现数据类型的转换

Posted 腿别抖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于shell下如何实现数据类型的转换的主要内容,如果未能解决你的问题,请参考以下文章

代码片段:Shell脚本实现重复执行和多进程

从shell中更新/写入到文档的数字,会变为float类型,怎么解决

Java类型相互转换byte[]类型,blob类型

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

如何将活动转换为片段以在抽屉中使用

shell中将字符串转换成数字