Linux Shell 进制错误 - value too great for base
解决方法:将要转换成十进制的变量或者数字 在前面加上`10#`
Linux Shell 编程进行数学运算时,如果有字符 '0' 打头的数 Bash 会当做八进制解释,而这经常会引起问题。比如我们用"08"参加运算,本意是当做10进制的8,实际却会运行报错。
通常情况下,直接写的数值不会以0打头,但如果是以前面命令的格式化输出为参数时,则往往不能控制。更危险的是,如果参与运算的以'0'打头数值达到了两位数或更多,且数值的每一位均在0-7之间,则 Shell 不会报错,但会输出错误的运算结果。下面是两个会出错的例子:
time=`date +%S`
time2=$((time%15))
当当前时间的秒正好是8或9的时候便会出现类似
aulddays:~$ time=`date +%S`
aulddays:~$ time2=$((time%15))
bash: 08: value too great for base (error token is "08") \or
bash: 08: value too great for base (error token is "09")
的报错。又如,使用 seq 时,为了格式工整,往往会在个位数前补'0'对齐:
for hour in `seq -f %02g 0 23`
dohour2=$(($hour+10))
done
之类,当循环到8时也会出错。
究其原因,就是shell将“08”当成了8进制数,而8进制数中合法的最大的数字是'7',因而出错了。要解决这个问题,必须让Shell强制将"08"当成10进制来解释,具体做法,已第一个例子来讲需要改写成:
time=`date +%S`
time2=$((10#time%15))
这样便可让 Bash 将"08"解释为十进制数。前面已经说过,当以'0'打头的数值位数有多位时且每一位都在0-7之间时,Bash 会以八进制解释且不会报错。如果发现脚本执行结果中的数值出现了诡异的问题时,一定要检查一下是否是整数进制发生了错误。
Linux Shell 进制错误 - value too great for base相关推荐
- linux进制转换的函数,Linux shell 进制转换
源地址链接:http://blog.csdn.net/axdc_qa_team/article/details/6090182 既然有需要,就把搜到感觉有用的进制转换函数或指令都贴在这里,便于以后应用 ...
- Linux shell 进制转换
shell可以在不调用第3方命令,表示不同进制数据.这里总结以下表示方法.shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值.如:以 0 ...
- linux下进制是如何转换?
一 其他进制转换为十进制方式 1 二进制转换为十进制 echo $((2#11111111)) 结果是255 2 八进制转换为十进制 ((num=8#333));echo $num 结果是219 ...
- linux错误日志重定向,Linux shell 重定向标准错误输出
文件描述符文件描述符是程序发送输出和获取输入的地方.当执行一个程序时,运行该程序的进程打开了3个文件描述符,分别是:0(标准输入).1(标准输出)和2(标准错误输出).重定向输出符号(>)是1& ...
- Linux编辑器进制转换以及进制转换
1.vim和gedit编辑器 vim 文件名 如果文件存在,直接打开,进行编辑 如果文件不存在,则创建并打开,进行编辑 vim:最经典的文本编辑工具,没有菜单,只有命令 1.1三种模式: 输入模式 命 ...
- linux 16进制 字符串转数字,〖Linux〗Shell十进制数值转换十六进制
Servlet的生命周期+实现方式 1.Servlet的生命周期: (1)被创建: 默认情况下,Servlet第一次被访问时,被服务器创建.会调用init()方法. ...
- linux shell mv/cp 错误: will not overwrite just-created <filename> with <sameFilename> 解决方法
运行shell脚本时,mv/cp时出现如下提示: mv: will not overwrite just-created <filename> with <sameFilename& ...
- linux shell 设置 标准 错误流 输出流 不显示
echo "123" >/dev/null 2>&1 > 代表重定向到哪里,例如:echo "123" > /home/123. ...
- linux 文件 16进制显示,linux 16进制 产看文件
hexdump - ascii, decimal, hexadecimal, octal dump 查看十六机制的首选工具. -c 每单元以字节为单位,显示出对应的ASCII码 -C 每单元以字节为单 ...
最新文章
- Networkx-cycle
- 独家 | 指南:不平衡分类的成本敏感决策树(附代码链接)
- 二进制安装部署 4 kubernetes集群---超详细教程
- Zabbix housekeeper processes more than 75% busy
- deMeer5_Attacker
- android虚拟电话号码,为何安卓手机坚持虚拟按键?这才是原因
- Java工作笔记-类型转换的一种思路(前后端分离、反射)
- wpf绑定 dictionary 给定关键字不再字典中_为什么要在 JavaScript 中学习函数式编程?...
- ssm框架重定向_精选 SSM 框架面试题整理
- JavaScript在发送请求AJAX请求时,URL的域名地址是使用绝对地址还是相对地址?
- HTMLCSS常见面试题
- 先锋在线APP操作指南
- 谈谈未来 APP 产品设计的革命性趋势
- 李宏毅学习笔记35.GAN.06.Tips for Improving GAN
- iOS开发 Tips 保存视频文件到相册
- 基因-药物相互作用数据库 DGIdb 介绍
- 2010年IT十大人物猜想
- Java中字符串为什么不以\0结尾
- 某马程序员NodeJS速学笔记
- 【English学习】10句电话英语礼貌结束通话