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中更新/写入到文档的数字,会变为float类型,怎么解决