最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本之進(jìn)制轉(zhuǎn)換器的實(shí)現(xiàn)

 更新時(shí)間:2023年03月23日 17:08:35   作者:恒悅sunsite  
本文主要介紹了Shell腳本之進(jìn)制轉(zhuǎn)換器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、需求說(shuō)明

計(jì)算IP地址我們經(jīng)常需要將十進(jìn)制和二進(jìn)制數(shù)值之間進(jìn)行轉(zhuǎn)換,實(shí)際上進(jìn)制之間轉(zhuǎn)換通過(guò)bc命令就可以完成。此進(jìn)制轉(zhuǎn)換器shell腳本就是利用bc進(jìn)制轉(zhuǎn)換功能來(lái)實(shí)現(xiàn)我們的需求,并做了一些完善,例如bc要求十六進(jìn)制字符為大寫,腳本進(jìn)行了優(yōu)化輸入大小寫都可以。腳本針對(duì)輸入的數(shù)值進(jìn)行了校驗(yàn),如果數(shù)值格式輸入錯(cuò)誤,會(huì)報(bào)錯(cuò)提示。bc命令的安裝和使用見(jiàn)博文Linux命令之bc命令。

二、腳本內(nèi)容

#!/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輸入錯(cuò)誤"
? ? 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ù)輸入錯(cuò)誤

到此這篇關(guān)于Shell腳本之進(jìn)制轉(zhuǎn)換器的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Shell 進(jìn)制轉(zhuǎn)換器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用shell命令統(tǒng)計(jì)日志的方法詳解

    利用shell命令統(tǒng)計(jì)日志的方法詳解

    這篇文章主要給大家介紹了關(guān)于利用shell命令統(tǒng)計(jì)日志的方法,通過(guò)這個(gè)命令將會(huì)對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • php在linux中可能用到的命令(推薦)

    php在linux中可能用到的命令(推薦)

    下面小編就為大家?guī)?lái)一篇php在linux中可能用到的命令(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Linux的打包壓縮與解壓縮---tar、xz、zip、unzip命令詳解

    Linux的打包壓縮與解壓縮---tar、xz、zip、unzip命令詳解

    Linux 下一堆各式各樣的壓縮文件名:.gz、.tar.gz、tgz、bz2、.Z、.tar 等眾多的壓縮文件名,本文重點(diǎn)介紹Linux的打包壓縮與解壓縮---tar、xz、zip、unzip命令,感興趣的朋友一起看看吧
    2024-02-02
  • Shell腳本對(duì)比兩個(gè)文本文件找出不同行的2個(gè)方法分享

    Shell腳本對(duì)比兩個(gè)文本文件找出不同行的2個(gè)方法分享

    這篇文章主要介紹了Shell腳本對(duì)比兩個(gè)文本文件找出不同行的2個(gè)方法分享,本文分別使用comm命令法、grep命令法實(shí)現(xiàn),需要的朋友可以參考下
    2014-12-12
  • jq命令對(duì)JSON進(jìn)行過(guò)濾遍歷結(jié)構(gòu)轉(zhuǎn)換等操作實(shí)例

    jq命令對(duì)JSON進(jìn)行過(guò)濾遍歷結(jié)構(gòu)轉(zhuǎn)換等操作實(shí)例

    這篇文章主要介紹了jq命令對(duì)JSON進(jìn)行過(guò)濾遍歷結(jié)構(gòu)轉(zhuǎn)換等操作實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Shell中exit和return的區(qū)別講解

    Shell中exit和return的區(qū)別講解

    今天小編就為大家分享一篇關(guān)于,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • linux BASH shell下設(shè)置字體及背景顏色

    linux BASH shell下設(shè)置字體及背景顏色

    這篇文章主要介紹了linux BASH shell下設(shè)置字體及背景顏色的方法,需要的朋友可以參考下
    2014-04-04
  • Linux磁盤管理方法介紹

    Linux磁盤管理方法介紹

    這篇文章介紹了Linux磁盤管理的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 圖片批量壓縮大小腳本分享

    圖片批量壓縮大小腳本分享

    這篇文章主要介紹了圖片批量壓縮大小的腳本,需要的朋友可以參考下
    2014-04-04
  • 5個(gè)實(shí)用的shell腳本面試題和答案

    5個(gè)實(shí)用的shell腳本面試題和答案

    這篇文章主要介紹了5個(gè)實(shí)用的shell腳本面試題和答案,給出的腳本堪稱編碼規(guī)范,麻雀雖小,異常處理,友好提示,一應(yīng)俱全,值得學(xué)習(xí),需要的朋友可以參考下
    2014-06-06

最新評(píng)論

工布江达县| 江口县| 鹰潭市| 凉城县| 正宁县| 固阳县| 股票| 宣威市| 远安县| 古浪县| 玉龙| 德阳市| 乌拉特后旗| 乌鲁木齐市| 启东市| 信宜市| 临潭县| 长治县| 桂东县| 宁明县| 新源县| 建德市| 得荣县| 汉沽区| 方正县| 永嘉县| 库伦旗| 晋州市| 宜兰县| 左权县| 寿阳县| 永靖县| 南华县| 涿州市| 碌曲县| 蓝田县| 黄冈市| 鹰潭市| 库伦旗| 梁河县| 余庆县|