shell脚本程序的简单介绍及应用

来源:互联网 发布:whatsapp端口 编辑:程序博客网 时间:2024/05/16 01:29

shell脚本程序需要注意的几点:
<1>变量使用前不需提前声明,直接使用即可;
<2>变量不存在任何数据类型的概念,统一默认为字符串;
<3>赋值操作等号的任何一边不能加空格,如有在操作符两边加空格的编程习惯时,需要注意这点;
<4>以#号开始的地方被理解为注释。

例一:如下为一个读取指定文件中变量值的简单程序(有三个变量:HOME PATH SAVE):
FILENAME=pathfile
if [ ! -f $FILENAME ];then
#-f(检测文件是否存在并且是普通文件)
        echo "FILE : $FILENAME does not exit!"
        exit 1
fi
cat $FILENAME | grep -v "#" | while read VAR
#-v(不包含指定字符串的行)
#read VAR(把读入的内容赋给变量VAR)
do
        NAME=`echo $VAR | awk 'BEGIN { FS = "=" } {print $1} '`
#FS(指定分隔符)
        PATH_IS=`echo $VAR | awk 'BEGIN { FS = "=" } {print $2} '`
        if [ -n $NAME ];then
#-n(非空判断)
                if [ "$NAME" = "HOME" ];then
#if判断可以为if test "$name" = china或者if [ "$name" = china ]两种格式,需要注意的是test把所有操作数和操作符作为单独的参数分别对待,也就是说他们之间至少要有一个空白字符分隔(等号两边必须要有空格作分隔);如果用第二种格式的话,在[之后和]之前都要空格
                        HOME=$PATH_IS
                        export HOME
#export命令让shell把给定的变量标志为导出,他们的值要传递给子shell,理解为相当于设置其为全局变量
                fi
                if [ "$NAME" = "PATH" ];then
                        PATH=$PATH_IS
                        export PATH
                fi
                if [ "$NAME" = "SAVE" ];then
                        SAVE=$PATH_IS
                        export SAVE
                fi
        else
                echo "NAME is null!"
                exit 1
        fi
done;

例二:如下为杀掉指定进程的一个简单程序(进程名由例一程序中的变量PATH传递过来):
kill_id(){
        ps -ef | grep ${PATH} | while read LINE
        do
                if [ "`echo $LINE | awk -c: '{print $3}' -`" = "1" ]; then
                        APP_EPID=`echo $LINE | awk -c: '{print $2}'`
                        kill -9 $APP_EPID &
                        sleep 1
                fi
        done;
}

原创粉丝点击