linux shell 字符串转数字

原型: value=$((n#${key}Xm))


value:自定义变量得到运算的值


n:欲转成的进制数; 2进制就是2,10进制就是10


key:字符串变量


X:操作符;如+ - * /  &...


m:操作数


实例1:10进制字符32加上32


a='32'


value=$((10#${a}+32))


----------------------------------------------


[root@localhost testshell]# echo $a

64


-------------64为10进制输出-------



实例2:16进制字符32加上32


a='32'


value=$((16#${a}+0x32))


 

----------------------------------------------


[root@localhost testshell]# echo $a

100


-------------100为10进制输出-------


现实使用实例:


shell通过for循环读取文件后要对文件名进行转数字操作


比如将文件名-9361,前面补2个0




shell脚本如下:


#!/bin/bash

#rename files in your input path


for file in `ls $1`

do

    if [ -f $file ]

    then

        right=${file#*.}

        left=${file%.*}

        if [ $2 = ${right} ]

        then

            leftn=$((10#$left-9361))

            name="00${leftn}"

            rename ${left} ${name} ${file}

            echo "${file}-->${name}.${right}"

       else

           echo "${file} is not $2"

       fi

    else

       echo "${file} is not file!"

    fi

done


JasonBlog

JasonBlog
请先登录后发表评论
  • 最新评论
  • 总共0条评论