快速业务通道

linux下进制转换的shell脚本

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-31

  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 --->
    Empire CMS,phome.net
    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 "33[40;31;5m failt 33[0m" #说明输入的num值不符合二进制数的标准(0和1)
  35. sleep 2 #停顿2s
  36. else #否则的话,num符合二进制的标准
  37. result=`echo "obase=8;ibase=2
    Empire CMS,phome.net
    ;$num"|bc` #把num转换成八进制,赋值给result
  38. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  48. sleep 2
  49. else
  50. result=`echo "obase=10;ibase=2;$num"|bc` #需要注意:obase在前,ibase在后,不然会出错
  51. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  61. sleep 2
  62. else
  63. result=`echo "obase=16
    Empire CMS,phome.net
    ;ibase=2;$num"|bc`
  64. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  74. sleep 2
  75. else
  76. result=`echo "obase=2;ibase=8;$num"|bc`
  77. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  87. sleep 2
  88. else
  89. result=`echo "obase=10
    Empire CMS,phome.net
    ;ibase=8;$num"|bc`
  90. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  100. sleep 2
  101. else
  102. result=`echo "obase=16;ibase=8;$num"|bc`
  103. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  113. sleep 2
  114. else
  115. result=`echo "obase=2
    Empire CMS,phome.net
    ;ibase=10;$num"|bc`
  116. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  126. sleep 2
  127. else
  128. result=`echo "obase=8;ibase=10;$num"|bc`
  129. echo -e "33[40;32;1m result is 33[40;31;5m $result33[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 "33[40;31;5m failt 33[0m"
  139. sleep 2
  140. else
  141. result=`echo "obase=16;ibase
    Empire CMS,phome.net
  142. esac
  143. 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的值相同,则符合要求.

希望大家给点意见

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号