您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Shell腳本之進(jìn)制轉(zhuǎn)換器如何實(shí)現(xiàn)”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
計算IP地址我們經(jīng)常需要將十進(jìn)制和二進(jìn)制數(shù)值之間進(jìn)行轉(zhuǎn)換,實(shí)際上進(jìn)制之間轉(zhuǎn)換通過bc命令就可以完成。此進(jìn)制轉(zhuǎn)換器shell腳本就是利用bc進(jìn)制轉(zhuǎn)換功能來實(shí)現(xiàn)我們的需求,并做了一些完善,例如bc要求十六進(jìn)制字符為大寫,腳本進(jìn)行了優(yōu)化輸入大小寫都可以。腳本針對輸入的數(shù)值進(jìn)行了校驗,如果數(shù)值格式輸入錯誤,會報錯提示。
#!/bin/bash #script name: conversion.sh #author: wuhs #description: 此腳本用于二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換 #date: 2022-05-09 #參數(shù)定義 #進(jìn)制轉(zhuǎn)換類型參數(shù) f=$1 #待轉(zhuǎn)換數(shù)值參數(shù) 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 "參數(shù)2要求輸入二進(jìn)制數(shù)" fi ;; 10to2) if echo $d |grep -E "^[0-9]*$" >/dev/null;then echo "obase=2;ibase=10;$d" |bc else echo "參數(shù)2要求輸入十進(jìn)制整數(shù)" fi ;; 8to10) if echo $d |grep -E "^[01234567]*$" >/dev/null;then echo "obase=10;ibase=8;$d" |bc else echo "參數(shù)2要求輸入八進(jìn)制字符" fi ;; 10to8) if echo $d |grep -E "^[0-9]*$" >/dev/null;then echo "obase=8;ibase=10;$d" |bc else echo "參數(shù)2要求輸入十進(jìn)制整數(shù)" 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 "參數(shù)2要求輸入十六進(jìn)制字符" fi ;; 10to16) if echo $d |grep -E "^[0-9]*$" >/dev/null;then echo "obase=16;ibase=10;$d" |bc else echo "參數(shù)2要求輸入十進(jìn)制整數(shù)" fi ;; 2to8) if echo $d |grep -E "^[0,1]*$" >/dev/null;then echo "obase=8;ibase=2;$d" |bc else echo "參數(shù)2要求輸入二進(jìn)制數(shù)" fi ;; 8to2) if echo $d |grep -E "^[01234567]*$" >/dev/null;then echo "obase=2;ibase=8;$d" |bc else echo "參數(shù)2要求輸入八進(jìn)制字符" fi ;; 2to16) if echo $d |grep -E "^[0,1]*$" >/dev/null;then echo "obase=16;ibase=2;$d" |bc else echo "參數(shù)2要求輸入二進(jìn)制數(shù)" 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 "參數(shù)2要求輸入十六進(jìn)制字符" fi ;; 8to16) if echo $d |grep -E "^[01234567]*$" >/dev/null;then echo "obase=16;ibase=8;$d" |bc else echo "參數(shù)2要求輸入八進(jìn)制字符" 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 "參數(shù)2要求輸入十六進(jìn)制字符" fi ;; *) echo "參數(shù)1輸入錯誤" exit ;; esac
1、二進(jìn)制轉(zhuǎn)換為十進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 2to10 1001 9 [root@s146 ipcheck]# ./conversion.sh 2to10 1003 參數(shù)2要求輸入二進(jìn)制數(shù)
2、十進(jìn)制轉(zhuǎn)換為二進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 10to2 255 11111111 [root@s146 ipcheck]# ./conversion.sh 10to2 255A 參數(shù)2要求輸入十進(jìn)制整數(shù)
3、八進(jìn)制轉(zhuǎn)換為十進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 8to10 71 57 [root@s146 ipcheck]# ./conversion.sh 8to10 81 參數(shù)2要求輸入八進(jìn)制字符
4、十進(jìn)制轉(zhuǎn)換為八進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 10to8 59 73 [root@s146 ipcheck]# ./conversion.sh 10to8 591 1117 [root@s146 ipcheck]# ./conversion.sh 10to8 591A 參數(shù)2要求輸入十進(jìn)制整數(shù)
5、十六進(jìn)制轉(zhuǎn)換為十進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 16to10 A 10 [root@s146 ipcheck]# ./conversion.sh 16to10 X 參數(shù)2要求輸入十六進(jìn)制字符 [root@s146 ipcheck]# ./conversion.sh 16to10 G 參數(shù)2要求輸入十六進(jìn)制字符 [root@s146 ipcheck]# ./conversion.sh 16to10 abc 2748
6、十進(jìn)制轉(zhuǎn)換為八進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 10to16 2748 ABC [root@s146 ipcheck]# ./conversion.sh 10to16 17 11 [root@s146 ipcheck]# ./conversion.sh 10to16 15 F
7、二進(jìn)制轉(zhuǎn)換為八進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 2to8 1011 13 [root@s146 ipcheck]# ./conversion.sh 2to8 1011. 參數(shù)2要求輸入二進(jìn)制數(shù)
8、八進(jìn)制轉(zhuǎn)換為二進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 8to2 31 11001 [root@s146 ipcheck]# ./conversion.sh 8to2 31a 參數(shù)2要求輸入八進(jìn)制字符
9、八進(jìn)制轉(zhuǎn)換為十六進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 8to16 13 B [root@s146 ipcheck]# ./conversion.sh 8to16 12 A [root@s146 ipcheck]# ./conversion.sh 8to16 12c 參數(shù)2要求輸入八進(jìn)制字符
10、十六進(jìn)制轉(zhuǎn)換為八進(jìn)制
[root@s146 ipcheck]# ./conversion.sh 16to8 C 14 [root@s146 ipcheck]# ./conversion.sh 16to8 c 14 [root@s146 ipcheck]# ./conversion.sh 16to8 c1d 6035 [root@s146 ipcheck]# ./conversion.sh 16to8 c1dg 參數(shù)2要求輸入十六進(jìn)制字符
11、禁止轉(zhuǎn)換參數(shù)輸入錯誤
“Shell腳本之進(jìn)制轉(zhuǎn)換器如何實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。