aini 发表于 2018-8-26 10:46:07

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))
  ----------------------------------------------
  # echo $a
  64
  -------------64为10进制输出-------
  实例2:16进制字符32加上32
  a='32'
  value=$((16#${a}+0x32))
  ----------------------------------------------
  # 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

页: [1]
查看完整版本: Linux shell 字符串转数字进行运算符操作