⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base.sh

📁 Shall高级编程
💻 SH
字号:
#!/bin/bash############################################################################ Shellscript:	base.sh - print number to different bases (Bourne Shell)# Author     :	Heiner Steven (heiner.steven@odn.de)# Date       :	07-03-95# Category   :	Desktop# $Id: base.sh,v 1.2 2000/02/06 19:55:35 heiner Exp $# ==> Above line is RCS ID info.############################################################################ Description## Changes# 21-03-95 stv	fixed error occuring with 0xb as input (0.2)############################################################################ ==> Used in ABS Guide with the script author's permission.# ==> Comments added by ABS Guide author.NOARGS=65PN=`basename "$0"`			       # Program nameVER=`echo '$Revision: 1.2 $' | cut -d' ' -f2`  # ==> VER=1.2Usage () {    echo "$PN - print number to different bases, $VER (stv '95)usage: $PN [number ...]If no number is given, the numbers are read from standard input.A number may be    binary (base 2)		starting with 0b (i.e. 0b1100)    octal (base 8)		starting with 0  (i.e. 014)    hexadecimal (base 16)	starting with 0x (i.e. 0xc)    decimal			otherwise (i.e. 12)" >&2    exit $NOARGS }   # ==> Function to print usage message.Msg () {    for i   # ==> in [list] missing.    do echo "$PN: $i" >&2    done}Fatal () { Msg "$@"; exit 66; }PrintBases () {    # Determine base of the number    for i      # ==> in [list] missing...    do         # ==> so operates on command line arg(s).	case "$i" in	    0b*)		ibase=2;;	# binary	    0x*|[a-f]*|[A-F]*)	ibase=16;;	# hexadecimal	    0*)			ibase=8;;	# octal	    [1-9]*)		ibase=10;;	# decimal	    *)		Msg "illegal number $i - ignored"		continue;;	esac	# Remove prefix, convert hex digits to uppercase (bc needs this)	number=`echo "$i" | sed -e 's:^0[bBxX]::' | tr '[a-f]' '[A-F]'`	# ==> Uses ":" as sed separator, rather than "/".	# Convert number to decimal	dec=`echo "ibase=$ibase; $number" | bc`  # ==> 'bc' is calculator utility.	case "$dec" in	    [0-9]*)	;;			 # number ok	    *)		continue;;		 # error: ignore	esac	# Print all conversions in one line.	# ==> 'here document' feeds command list to 'bc'.	echo `bc <<!	    obase=16; "hex="; $dec	    obase=10; "dec="; $dec	    obase=8;  "oct="; $dec	    obase=2;  "bin="; $dec!    ` | sed -e 's: :	:g'    done}while [ $# -gt 0 ]# ==>  Is a "while loop" really necessary here,# ==>+ since all the cases either break out of the loop# ==>+ or terminate the script.# ==> (Above comment by Paulo Marcel Coelho Aragao.)do    case "$1" in	--)     shift; break;;	-h)     Usage;;                 # ==> Help message.	-*)     Usage;;         *)     break;;                 # first number    esac   # ==> More error checking for illegal input might be useful.    shiftdoneif [ $# -gt 0 ]then    PrintBases "$@"else					# read from stdin    while read line    do	PrintBases $line    donefiexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -