详细介绍Linux shell脚本基础学习(七)

系统 Linux
Linux shell脚本基础的学习理论知识已经讲完了,后面是两个具体的实例,这里先说第一个关于二进制何时禁止之间的转换。

Linux shell脚本基础学习这部分如果只看前面间的理论部分虽然有一些例子,但是还不够系统,这里将以具体实例给大家展现Linux shell脚本编程,以帮助大家完善Linux shell基础的学习和提高。

第2部分 实例

现在我们来讨论编写一个脚本的一般步骤。任何优秀的脚本都应该具有帮助和输入参数。并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意。这时候,在写一个新的脚本时我们只需要执行一下copy命令:

cp framework.sh myscript

然后再插入自己的函数。

让我们再看个例子:

二进制到十进制的转换

脚本 b2d 将二进制数 (比如 1101) 转换为相应的十进制数。这也是一个用expr命令进行数学运算的例子:

#!/bin/sh

# vim: set sw=4 ts=4 et:

help()

{

cat <

b2h -- convert binary to decimal

USAGE: b2h [-h] binarynum

OPTIONS: -h help text

EXAMPLE: b2h 111010

will return 58

HELP

exit 0

}

error()

{

# print an error and exit

echo "$1"

exit 1

}

lastchar()

{

# return the last character of a string in $rval

if [ -z "$1" ]; then

# empty string

rval=""

return

fi

# wc puts some space behind the output this is why we need sed:

numofchar=`echo -n "$1" | wc -c | sed 's/ //g' `

# now cut out the last char

rval=`echo -n "$1" | cut -b $numofchar`

}

chop()

{

# remove the last character in string and return it in $rval

if [ -z "$1" ]; then

# empty string

rval=""

return

fi

# wc puts some space behind the output this is why we need sed:

numofchar=`echo -n "$1" | wc -c | sed 's/ //g' `

if [ "$numofchar" = "1" ]; then

# only one char in string

rval=""

return

fi

numofcharminus1=`expr $numofchar "-" 1`

# now cut all but the last char:

rval=`echo -n "$1" | cut -b 0-${numofcharminus1}`

}

while [ -n "$1" ]; do

case $1 in

-h) help;shift 1;; # function help is called

--) shift;break;; # end of options

-*) error "error: no such option $1. -h for help";;

*) break;;

esac

done

# The main program

sum=0

weight=1

# one arg must be given:

[ -z "$1" ] && help

binnum="$1"

binnumorig="$1"

while [ -n "$binnum" ]; do

lastchar "$binnum"

if [ "$rval" = "1" ]; then

sum=`expr "$weight" "+" "$sum"`

fi

# remove the last position in $binnum

chop "$binnum"

binnum="$rval"

weight=`expr "$weight" "*" 2`

done

echo "binary $binnumorig is decimal $sum"

该脚本使用的算法是利用十进制和二进制数权值 (1,2,4,8,16,..),比如二进制"10"可以这样转换成十进制:

0 * 1 + 1 * 2 = 2

为了得到单个的二进制数我们是用了lastchar 函数。该函数使用wc –c计算字符个数,然后使用cut命令取出末尾一个字符。Chop函数的功能则是移除最后一个字符。

这个Linux shell脚本实例帮我们完成了转换,下一次我们将举例一个文件循环程序。

【编辑推荐】

  1. 详细介绍Linux shell脚本基础学习(一)
  2. 详细介绍Linux shell脚本基础学习(六)
  3. Linux系统安全提高之安全配置
  4. 详细介绍Linux优盘引导安装(一)自引导方式
  5. 举例说明Linux不同网段访问的设置办法
责任编辑:小霞 来源: 互联网
相关推荐

2010-03-05 11:18:52

Linux shell

2010-03-05 13:00:46

2010-03-05 13:19:23

2010-03-05 12:50:38

Linux shell

2010-03-05 11:58:52

2010-03-05 10:50:17

2010-03-05 10:24:33

2011-09-27 13:52:41

2010-06-23 16:05:36

Linux Bash

2010-06-23 15:55:36

Linux Bash

2011-06-21 14:42:37

ECMAScriptJavaScript

2019-08-12 07:45:44

Linux脚本shell

2016-12-14 19:24:41

2010-02-23 10:32:20

Python 脚本

2011-06-22 12:57:54

JVM

2021-02-15 17:29:46

LinuxShell脚本

2010-06-23 15:36:23

Linux Bug B

2009-12-11 15:59:00

Linux grep指

2010-01-05 16:56:28

2009-12-25 14:24:59

Linux指令od
点赞
收藏

51CTO技术栈公众号