shell编程基础

shell,即命令解析器,将用户输入的指令转换为相应的机器能够运行的程序。
shell脚本的第一行必须是如下格式:
#! /bin/sh
符号#!用来指定该脚本文件的解析程序。
当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性,即执行以下命令:
chmod +x filename

1.注释
在shell程序中,以#开头的句子表示注释,直到这一行结束。

2.变量
在shell编程中,所有的变量都由字符串组成,并且不需要预先对变量进行声明。有时候变量名很容易和其他字符混淆,可以使用{}来区分,例如:echo "this is the ${num}nd people."。
2.1 默认变量
$#:传入脚本的命令行参数个数。
$*:所有命令行参数值,各个参数值之间用空格隔开。
$0:命令本身(shell文件名)。
$1:第一个命令行参数。
$2:第二个命令行参数。
2.2 局部变量
在变量首次被赋值时加上local关键字可以声明一个局部变量。
2.3 注意
变量赋值时,“=”左右两边都不能有空格。
BASH中的语句结尾不需要分号。

3.if语句
if [ expression ]
then
       #code block
else if [ expression ] #或者是:elif [ expression ]
        then
               #code block
        else
               #code block
        fi
fi

4.比较操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n

5.if语句和比较操作举例(test.sh):
#! /bin/bash
a=$1
b=$2
if [ -z $a ] || [ -z $b ]
then
        echo "please enter two numbers."
        exit 1
fi
if [ $a -eq $b ]
then
        echo "number a == number b"
else if [ $a -gt $b]
        then
                echo "number a > number b"
        elif [ $a -lt $b ]
        then
                echo "number a < number b"
        fi
fi
#注意在“[”和“]”左右都要有空格
#注意“=”左右都要有空格

6.文件判断
-e 文件已经存在
-f 文件时普通文件
-s 文件大小不为零
-d 文件是一个目录
-r 文件对当前用户可以读取
-w 文件对当前用户可以写入
-x 文件对当前用户可以执行

7.for循环
基本结构是:
for var in [list]
do
    #code block
done
其中var是循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体。另外如果do和for被写在同一行,必须在do前面加上“;”。如果list列表被包含在一对双括号中,则被认为是一个元素。

8.while循环
while循环的基本结构是:
while [ condition ]
do
    #code block
done

9.until循环
until循环的基本结构是:
until [ codition ]
do
    #code block
done

10.case语句
bash中的case结构与c语言中的switch语句的功能类似,可以用于进行多分支控制。
case "$var" in
codition1)
                 ;;
codition2)
                 ;;
*)
   default statments;;
esac

posted @ 2010-07-15 11:03  MikeLin  阅读(275)  评论(1编辑  收藏  举报