shell 字符串转数字

声明一个字符变量
date="20170801"
现在我想要将date
变化成year, month, day 三个数字
即:
year = 2017
month = 8
day = 1
以上全是数字,不是字符,
请问有没有什么好的方法,我用了awk,有点麻烦,请教一下有没有简单点的方式处理,新手菜鸟求指教

阅读 26.5k
3 个回答

使用 expr 注意, 反引号 的使用
date="20170801"
y=$(echo $date|cut -c1-4)
year=`expr $y'

这样就可以了。

感谢其他小伙伴的帮助,嚒嚒哒

convert_string(){  
    str=$1  
    sum=0  
    index=0  
    length=${#str}  
      
    while [ ${index} -lt ${length} ]  
    do  
        let sum=10*sum+${str:${index}:1}  
        let index+=1  
    done  
      
    echo ${sum}  
}

你可以认为bash脚本是弱类型语言,通常并不关心类型,所以没啥意义。

非要声明成强类型的,请用declare关键字

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题