[转]linux下进制转换的shell脚本

简介:

 
 
  1. #!/bin/bash  
  2. while true  
  3. do  
  4. echo "#############################################################"  
  5. echo "# Author:                netcat                             #"  
  6. echo "# Lable:                 jinzhi.sh                          #"  
  7. echo "# QQ:                    297020555                          #"  
  8. echo "# Create Date:           2011-06-17                         #"  
  9. echo "# Version:               v1.0                               #"  
  10. echo "#############################################################"  
  11. echo ""  
  12. echo "1  2 ---> 8"     #二进制转换成八进制  
  13. echo "2  2 ---> 10"    #二进制转换成十进制   
  14. echo "3  2 ---> 16"    #二进制转换成十六进制    
  15. echo "4  8 ---> 2"     #八进制转换成二进制   
  16. echo "5  8 ---> 10"    #八进制转换成十进制  
  17. echo "6  8 ---> 16"    #八进制转换成十六进制  
  18. echo "7  10 ---> 2"    #十进制转换成二进制  
  19. echo "8  10 ---> 8"    #十进制转换成八进制  
  20. echo "9  10 ---> 16"   #十进制转换成十六进制  
  21. echo "10 16 ---> 2"    #十六进制转换成二进制  
  22. echo "11 16 ---> 8"    #十六进制转换成八进制  
  23. echo "12 16 ---> 10"   #十六进制转换成十进制  
  24. echo "13   exit"       #退出   
  25. echo ""  
  26. echo "enter your select:"  #输入选择  
  27. read ans                   #读取选择的值,赋值给ans  
  28. case $ans in               #读取$ans的值  
  29. 1)                         #如果ans为1时  
  30. read -p  "enter your num:" num #输入你要转换的数,赋值给num  
  31. a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  #对num进行判断  
  32. if [ $num != $a ]   #如果num不等于a  
  33. then  
  34. echo -e "\033[40;31;5m failt \033[0m"  #说明输入的num值不符合二进制数的标准(0和1)    
  35. sleep 2          #停顿2s  
  36. else              #否则的话,num符合二进制的标准  
  37. result=`echo "obase=8;ibase=2;$num"|bc`  #把num转换成八进制,赋值给result  
  38. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m" #输出result的值  
  39. sleep 4     #停顿4s  
  40. fi  
  41. ;;  
  42. 2)  
  43. read -p  "enter your num:" num  
  44. a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  
  45. if [ $num != $a ]  
  46. then  
  47. echo -e "\033[40;31;5m failt \033[0m"  
  48. sleep 2  
  49. else  
  50. result=`echo "obase=10;ibase=2;$num"|bc`  #需要注意:obase在前,ibase在后,不然会出错  
  51. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  52. sleep 4  
  53. fi  
  54. ;;  
  55. 3)  
  56. read -p  "enter your num:" num  
  57. a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  
  58. if [ $num != $a ]  
  59. then  
  60. echo -e "\033[40;31;5m failt \033[0m"  
  61. sleep 2  
  62. else  
  63. result=`echo "obase=16;ibase=2;$num"|bc`  
  64. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  65. sleep 4  
  66. fi  
  67. ;;  
  68. 4)  
  69. read -p  "enter your num:" num  
  70. a=`echo $num|tr "[8-9][a-z][A-Z]" "[4-5][A-Z][a-z]"` #判断是否符合八进制标准  
  71. if [ $num != $a ]  
  72. then  
  73. echo -e "\033[40;31;5m failt \033[0m"  
  74. sleep 2  
  75. else  
  76. result=`echo "obase=2;ibase=8;$num"|bc`  
  77. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  78. sleep 4  
  79. fi  
  80. ;;  
  81. 5)  
  82. read -p  "enter your num:" num  
  83. a=`echo $num|tr "[8-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  
  84. if [ $num != $a ]  
  85. then  
  86. echo -e "\033[40;31;5m failt \033[0m"  
  87. sleep 2  
  88. else  
  89. result=`echo "obase=10;ibase=8;$num"|bc`  
  90. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  91. sleep 4  
  92. fi  
  93. ;;  
  94. 6)  
  95. read -p  "enter your num:" num  
  96. a=`echo $num|tr "[8-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`   
  97. if [ $num != $a ]  
  98. then  
  99. echo -e "\033[40;31;5m failt \033[0m"  
  100. sleep 2  
  101. else  
  102. result=`echo "obase=16;ibase=8;$num"|bc`  
  103. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  104. sleep 4  
  105. fi  
  106. ;;  
  107. 7)  
  108. read -p  "enter your num:" num  
  109. a=`echo $num|tr "[a-z][A-Z]" "[A-Z][a-z]"` #判断是否符合十进制标准  
  110. if [ $num != $a ]  
  111. then  
  112. echo -e "\033[40;31;5m failt \033[0m"  
  113. sleep 2  
  114. else  
  115. result=`echo "obase=2;ibase=10;$num"|bc`  
  116. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  117. sleep 4  
  118. fi  
  119. ;;  
  120. 8)  
  121. read -p  "enter your num:" num  
  122. a=`echo $num|tr "[a-z][A-Z]" "[A-Z][a-z]"`  
  123. if [ $num != $a ]  
  124. then  
  125. echo -e "\033[40;31;5m failt \033[0m"  
  126. sleep 2  
  127. else  
  128. result=`echo "obase=8;ibase=10;$num"|bc`  
  129. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  130. sleep 4  
  131. fi  
  132. ;;  
  133. 9)  
  134. read -p  "enter your num:" num  
  135. a=`echo $num|tr "[a-z][A-Z]" "[A-Z][a-z]"`  
  136. if [ $num != $a ]  
  137. then  
  138. echo -e "\033[40;31;5m failt \033[0m"  
  139. sleep 2  
  140. else  
  141. result=`echo "obase=16;ibase=10;$num"|bc`  
  142. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  143. sleep 4  
  144. fi  
  145. ;;  
  146. 10)  
  147. read -p  "enter your num:" num  
  148. a=`echo $num|tr "[g-z]" "[G-Z]"`  #判断是否符合十六进制标准  
  149. if [ $num != $a ]  
  150. then  
  151. echo -e "\033[40;31;5m failt \033[0m"  
  152. sleep 2  
  153. else  
  154. num=`echo $num|tr "[a-f]" "[A-F]"` #不知道为什么,十六进制只是别大写字母,所以在这把小写的转成大写,大写的不变  
  155. result=`echo "obase=2;ibase=16;$num"|bc`  
  156. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  157. sleep 4  
  158. fi  
  159. ;;  
  160. 11)  
  161. read -p  "enter your num:" num  
  162. a=`echo $num|tr "[g-z]" "[G-Z]"`  
  163. if [ $num != $a ]  
  164. then  
  165. echo -e "\033[40;31;5m failt \033[0m"  
  166. sleep 2  
  167. else  
  168. num=`echo $num|tr "[a-f]" "[A-F]"`  
  169. result=`echo "obase=8;ibase=16;$num"|bc`  
  170. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  171. sleep 4  
  172. fi  
  173. ;;  
  174. 12)  
  175. read -p  "enter your num:" num  
  176. a=`echo $num|tr "[g-z]" "[G-Z]"`  
  177. if [ $num != $a ]  
  178. then  
  179. echo -e "\033[40;31;5m failt \033[0m"  
  180. sleep 2  
  181. else  
  182. num=`echo $num|tr "[a-f]" "[A-F]"`  
  183. result=`echo "obase=10;ibase=16;$num"|bc`  
  184. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
  185. sleep 4  
  186. fi  
  187. ;;  
  188. 13)  
  189. exit  
  190. ;;  
  191. *)  
  192. echo -e "\033[40;31;5m failt \033[0m"  
  193. sleep 2  
  194. ;;  
  195. esac  
  196. done 

下面给大家截个图:

 

 关于进制转换的问题 :   http://297020555.blog.51cto.com/1396304/591988
关于echo输出颜色的问题:http://297020555.blog.51cto.com/1396304/591943


这个脚本写的比较粗糙,很多内容都不完善,所以拿出来,让大家给点建议。

在过程中遇到个问题,感觉解决的不是很好,希望大家给点意见。

怎么判断输入的内容是否符合二进制标准(0和1)?
我是这么解决的:
a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`
如果num和a的值相同,则符合要求。


本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2011/12/08/2310373.html,如需转载请自行联系原作者

本文转自feisky博客园博客,原文链接:xxxxx,如需转载请自行联系原作者
相关文章
|
1月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
314 9
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
166 0
Linux系统初始化脚本
|
1月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
172 2
|
1月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
4月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
218 60
|
1月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
3月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
358 1
|
5月前
|
Java Linux
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
289 29
|
5月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
127 17
|
5月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
316 3