linux下进制转换的shell脚本推荐

#!/bin/bash whiletrue do echo ############################################################# echo #Author:netcat# echo #Lable:jinzhi.sh# echo #QQ:297020555# echo #CreateDate:2011-06-17# echo #Version:v1.0# echo ############################################################# echo echo 12--- 8 #二进制转换成八进制 echo 22--- 10 #二进制转换成十进制 echo 32--- 16 #二进制转换成十六进制 echo 48--- 2 #八进制转换成二进制 echo 58--- 10 #八进制转换成十进制 echo 68--- 16 #八进制转换成十六进制 echo 710--- 2 #十进制转换成二进制 echo 810--- 8 #十进制转换成八进制 echo 910--- 16 #十进制转换成十六进制 echo 1016--- 2 #十六进制转换成二进制 echo 1116--- 8 #十六进制转换成八进制 echo 1216--- 10 #十六进制转换成十进制 echo 13exit #退出 echo echo enteryourselect: #输入选择 readans#读取选择的值,赋值给ans case$ansin#读取$ans的值 1)#如果ans为1时 read-p enteryournum: num#输入你要转换的数,赋值给num a=`echo$num|tr [2-9][a-z][A-Z]  [4-5][A-Z][a-z] `#对num进行判断 if[$num!=$a]#如果num不等于a then echo-e \033[40;31;5mfailt\033[0m #说明输入的num值不符合二进制数的标准(0和1) sleep2#停顿2s else#否则的话,num符合二进制的标准 result=`echo obase=8;ibase=2;$num |bc`#把num转换成八进制,赋值给result echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m #输出result的值 sleep4#停顿4s fi ;; 2) read-p enteryournum: num a=`echo$num|tr [2-9][a-z][A-Z]  [4-5][A-Z][a-z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=10;ibase=2;$num |bc`#需要注意:obase在前,ibase在后,不然会出错 echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 3) read-p enteryournum: num a=`echo$num|tr [2-9][a-z][A-Z]  [4-5][A-Z][a-z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=16;ibase=2;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 4) read-p enteryournum: num a=`echo$num|tr [8-9][a-z][A-Z]  [4-5][A-Z][a-z] `#判断是否符合八进制标准 if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=2;ibase=8;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 5) read-p enteryournum: num a=`echo$num|tr [8-9][a-z][A-Z]  [4-5][A-Z][a-z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=10;ibase=8;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 6) read-p enteryournum: num a=`echo$num|tr [8-9][a-z][A-Z]  [4-5][A-Z][a-z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=16;ibase=8;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 7) read-p enteryournum: num a=`echo$num|tr [a-z][A-Z]  [A-Z][a-z] `#判断是否符合十进制标准 if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=2;ibase=10;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 8) read-p enteryournum: num a=`echo$num|tr [a-z][A-Z]  [A-Z][a-z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=8;ibase=10;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 9) read-p enteryournum: num a=`echo$num|tr [a-z][A-Z]  [A-Z][a-z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else result=`echo obase=16;ibase=10;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 10) read-p enteryournum: num a=`echo$num|tr [g-z]  [G-Z] `#判断是否符合十六进制标准 if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else num=`echo$num|tr [a-f]  [A-F] `#不知道为什么,十六进制只是别大写字母,所以在这把小写的转成大写,大写的不变 result=`echo obase=2;ibase=16;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 11) read-p enteryournum: num a=`echo$num|tr [g-z]  [G-Z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else num=`echo$num|tr [a-f]  [A-F] ` result=`echo obase=8;ibase=16;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 12) read-p enteryournum: num a=`echo$num|tr [g-z]  [G-Z] ` if[$num!=$a] then echo-e \033[40;31;5mfailt\033[0m sleep2 else num=`echo$num|tr [a-f]  [A-F] ` result=`echo obase=10;ibase=16;$num |bc` echo-e \033[40;32;1mresultis\033[40;31;5m$result\033[0m sleep4 fi ;; 13) exit ;; *) echo-e \033[40;31;5mfailt\033[0m sleep2 ;; esac 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的值相同,则符合要求。希望大家给点意见

附件:http://down.51cto.com/data/2358393

时间慢慢的流淌,人生有风雨阳光,

linux下进制转换的shell脚本推荐

相关文章:

你感兴趣的文章:

标签云: