#script name: conversion.sh
#author: wuhs
#description: 此脚本用于二进制和十进制之间的转换
#date: 2022-05-09
#参数定义
#进制转换类型参数
f=$1
#待转换数值参数
d=$2
case $1 in
? 2to10)
? ? if echo $d |grep -E “^[0,1]*$” >/dev/null;then
? ? ? echo “obase=10;ibase=2;$d” |bc
? ? else
? ? ? echo “参数2要求输入二进制数”
? ? fi
? ;;
? 10to2)
? ? if echo $d |grep -E “^[0-9]*$” >/dev/null;then
? ? ? echo “obase=2;ibase=10;$d” |bc
? ? else
? ? ? echo “参数2要求输入十进制整数”
? ? fi
? ;;
? 8to10)
? ? if echo $d |grep -E “^[01234567]*$” >/dev/null;then
? ? ? echo “obase=10;ibase=8;$d” |bc
? ? else
? ? ? echo “参数2要求输入八进制字符”
? ? fi
? ;;
? 10to8)
? ? if echo $d |grep -E “^[0-9]*$” >/dev/null;then
? ? ? echo “obase=8;ibase=10;$d” |bc
? ? else
? ? ? echo “参数2要求输入十进制整数”
? ? fi
? ;;
? 16to10)
? ? if echo $d |grep -E “^[0-9A-Fa-f]*$” >/dev/null;then
? ? ? d=`echo $d |tr a-z A-Z`
? ? ? echo “obase=10;ibase=16;$d” |bc
? ? else
? ? ? echo “参数2要求输入十六进制字符”
? ? fi
? ;;
? 10to16)
? ? if echo $d |grep -E “^[0-9]*$” >/dev/null;then
? ? ? echo “obase=16;ibase=10;$d” |bc
? ? else
? ? ? echo “参数2要求输入十进制整数”
? ? fi
? ;;
? 2to8)
? ? if echo $d |grep -E “^[0,1]*$” >/dev/null;then
? ? ? echo “obase=8;ibase=2;$d” |bc
? ? else
? ? ? echo “参数2要求输入二进制数”
? ? fi
? ;;
? 8to2)
? ? if echo $d |grep -E “^[01234567]*$” >/dev/null;then
? ? ? echo “obase=2;ibase=8;$d” |bc
? ? else
? ? ? echo “参数2要求输入八进制字符”
? ? fi
? ;;
? 2to16)
? ? if echo $d |grep -E “^[0,1]*$” >/dev/null;then
? ? ? echo “obase=16;ibase=2;$d” |bc
? ? else
? ? ? echo “参数2要求输入二进制数”
? ? fi
? ;;
? 16to2)
? ? if echo $d |grep -E “^[0-9A-Fa-f]*$” >/dev/null;then
? ? ? d=`echo $d |tr a-z A-Z`
? ? ? echo “obase=2;ibase=16;$d” |bc
? ? else
? ? ? echo “参数2要求输入十六进制字符”
? ? fi
? ;;
? 8to16)
? ? if echo $d |grep -E “^[01234567]*$” >/dev/null;then
? ? ? echo “obase=16;ibase=8;$d” |bc
? ? else
? ? ? echo “参数2要求输入八进制字符”
? ? fi
? ;;
? 16to8)
? ? if echo $d |grep -E “^[0-9A-Fa-f]*$” >/dev/null;then
? ? ? d=`echo $d |tr a-z A-Z`
? ? ? echo “obase=8;ibase=16;$d” |bc
? ? else
? ? ? echo “参数2要求输入十六进制字符”
? ? fi
? ;;
? *)
? ? echo “参数1输入错误”
? ? exit
? ;;
esac