Shell编程

首先来看一个例子

#! /bin/sh

a=5

b=3

echo a=$a

echo b=$b

if (test “$a” = “$b”) then

  echo a=b

else

  echo a!=b

fi

 

第一行前面的“#”号不是注释,“#!”而且出现在第一行代表通知系统用/bin/sh来执行下面的程序。

 

 

以“#”开头的行代表注释。
字符串前面加”$”代表它是一个变量,
  –如果”$”后面是数字,代表第几个参数
  –$1代表第一个参数,$2代表第二个参数,$0代表命令本身
参数详细说明

参数

说明

$i

代表第i个参数

$#

代表参数个数

$*

代表所有参数

$?

上一个命令的返回值

 

$i例子

#! /bin/sh

echo $#

echo $1

echo $*

 

 

shift语句。
$i只能提供0到9这10个数据参数,那么超过10个

怎么办呢?

shift能使引用数移位,如此就可以将引用过的引数移掉,把位置留给下一个引数。

echo $# $*

shift

echo $# $* 

 

 

以“` `”符号包含的内容不是字符串,而是代表这是一个shell 命令。

echo “today is” `date`

前面是字符,后面`date`表示执行date这个命令。

PDATE=`date`

代表定义一个变量PDATE,将date执行完成输出的结果放入变量 PDATE中。
 
 
“expr”是用来取计算的结果。

a=9

b=10

var1=$a+$b

echo $var1

输出结果是”9+10”

“expr”是用来取计算的结果。

var1=`expr $a + $b`

注意:“+”前后都需要有空格
 
 
 
read命令用于从终端或文件读取输入。
read命令读取一个输入行,直至遇到换行符。
行尾的换行符在读入时将被转换成一个空字符。
如果read命令后有变量名,输入内容赋给该变量,如果read命令后未跟变量名,读入的行将被赋值给内置变量REPLY。
 
 
 
 
read例子

 #! /bin/sh

read a

read b

var1=`expr $a + $b`

echo $var1

 

 

第一种if条件语句。

if (test condition) then

  commands

else

  commands

fi

if条件语句中test是一个固定关键字,用来判断condition的描述是否正确,正确继续执行下面语句,错误执行else后面语句。
fi表示if语句结束。
 
 
第一种if条件语句例子。

#! /bin/sh

if (test “$1” = “start”) then

  echo “is start”

else

  echo “is nothing”

fi

 

第二种if条件语句。

if [ -option expr ]; then

  commands

else

  commands

fi

不同的条件代表不同的判断方式。
例如 if [ -r file ];,”[””]”里面都要加上空格,”]”后面要加”;”号。
 
 
-option说明

option

说明

-d file

文件存在并且是个目录

-e file

文件存在

-r file

文件存在并且可读

-w file

文件存在并且可写

-x file

文件存在并且可执行

 

 

第二种if条件语句例子。

#! /bin/sh

if [ -f abc.c ]; then

  echo “have abc.c”

else

  echo “have not abc.c”

fi

 

 

 

while循环语句。

while [ expr ];

do

  commands

done

expr为真的时候,while循环一直下去,直到expr为假。
 
 
while语句例子。

#! /bin/sh

times=0

while [ "$times" != "5" ];

do

        echo $times

        times=$[$times + 1]

done

 

 

case分支条件语句。

case “string” in

pattern_1)

  commands

;;

pattern_2)

  commands

;;

*)

  commands

;;

esac

当条件语句中的 string等于pattern字符串时执行pattern下面命令。
当没有符合条件时,最后执行*)。
 
 
case语句例子。

#! /bin/sh

case "$1" in

start)

        echo "is start"

        ;;

stop)

        echo "is stop"

        ;;

*)

        echo "is nothing"

esac

 

 

 

for循环语句。

for varname in list ;

do

  commands

done

list可以是一个字符串或数字
for每执行一次循环就将varname指定为list中的一个值,直到list这个数组结束。
 
 
for语句例子。

#! /bin/sh

sun=0

for i in 1 2 3 4 5;

do

        sum=$[$sum + i]

        echo $sum

done

 

 

exit语句。

exit code

exit可以让一个shell退出,与C语言的exit函数类似。
 
:语句。

:

代表空语句,本身没有任何作用,但又是合法的语句,它经常用来填补程序设计的空缺。
 
shell和C语言一样,可以提供自定义函数。

function funcname

{

  commands

}

使用函数前必须先定义函数。
 
 
函数例子。

#! /bin/sh

function func

{

        echo "function is begin"

}

 

func

 

带有参数的函数例子。

#! /bin/sh

function func

{

        echo "function is begin"

        a=$1

        b=$2

        echo `expr $a + $b`

}

 

func 3 5

 

 

带有参数和返回值的函数例子。

#! /bin/sh

function func

{

        echo "function is begin"

        a=$1

        b=$2

        return `expr $a + $b`

}

 

func 3 9

var1=$?

echo $var1

 

只要对linux的命令很熟悉,在稍具一些程序语言能力,学习Shell编程是可以速成的。
Shell内置的功能与程序控制语句:if,case等都很简单。
通过大量动手操作,仔细了解每种语句的用法,相信足可以成为Shell编程高手。



 

 

 

posted @ 2015-05-06 23:48  张仕传  阅读(175)  评论(0编辑  收藏  举报