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://297020555.blog.51cto.com/1396304/592030

抱最大的希望,为最大的努力,做最坏的打算

linux下进制转换的shell脚本

相关文章:

你感兴趣的文章:

标签云: