shell 脚本编程

发布于:2024-07-03 ⋅ 阅读:(18) ⋅ 点赞:(0)

简介:用户通过shell向计算机发送指令的,计算机通过shell给用户返回指令的执行结果

通过shell编程可以达到的效果:提高工作效率、可以实现自动化

需要学习的内容:Linux 、  shell的语法规范

编写shell的流程:

      第一步:用vi/vim创建一个.sh的文件。

      第二步:在文件中进行开发。

      第三步:给文件赋予可执行权限。

      第四步:执行脚本。

本地变量: 

     定义变量:Var_Name=”Value“    变量名=“值” 。 

     引用变量: ${Var_Name}

     撤销变量:unset  Var_Name

局部变量:   定义:local Var_Name=”Value“。      在函数内部生效

环境变量:定义:export Var_Name=”Value“。    常用的环境变量:PS1、HOSTNAME、LANG 

 位置变量:主要用于向脚本中传递参数。   表示方法:  $1,$2,$3...$n      举例说明:./2.sh 1 5 9(传入的数据)

特殊变量:  $0   脚本自身名称        $?    上个命令的执行状态        $#  参数列表

变量命名要求:  只能使用数字、字母、下划线组成。  不能以数字开头。   不能使用程序中的关键字。

变量名的默认规则:  见明知意、   自定义变量小写、  换将变量大写。

补充环境变量:set命令可以显示当前系统上所有的变量。  export、env命令可以显示环境变量

bash条件判断基础

判断的作用:判断后续操作的前提条件是否满足;如果满足执行一种指令,不满足则执行另一种指令。

条件测试类型:   整形测试、字符测试、文件测试。

逻辑运算:

与运算    &&       真&&真=真;真&&假=假;假&&假=假;假&&真=假

或运算    | |      真| |真=真      真 | |假=真      假 | | 真 = 真     假 | | 假 = 假

非运算   !        !真=假          !假=真

 判断方式

   1) est EXPRESSION                 举例:test 2 -gt 1

     2)[ EXPRESSION ]                举例:[ 2 -gt 1 ]

3)    [[ EXPRESSION ]]             举例:[[ 2 gt 1 ]] 

4)     用命令执行状态来作为判断条件

查看脚本的执行过程:    bash  -x  脚本

bash条件判断语法格式

    if三种格式:

           单分支 :                   if 条件;then          分支1      fi

           双分支:          if 条件;then     分支1   else   分支2       fi

         多分支:      if 条件;then    分支1       elif 条件;then      分支2       elif 条件;then    分支3....  elif 条件n; then  分支n   else     分支  fi

练习题如下

               1)案例:90分成绩以上为 A;80分成绩以上为 B;70分成绩以上为 C; 60分成绩以上为 D;0分以上为     E。

答:
#!/bin/bash
   score=$1
 if [ $score -gt 100 ];then
            echo "pleas enter 0-100"
   elif [ $score -gt 90 ];then
            echo "A"
    elif [ $score -gt 80 ];then
            echo "B"
    elif [ $score -gt 70 ];then
            echo "C"
      elif [ $score -gt 60 ];then
            echo "D"
       else      
           echo "E"
 fi

2)案例:让用户指定一个文件,判断:如果有空白行,就显示空白行数,没有则提示“no“

#!/bin/bash
   file=$1
   lines=`grep "^$" $file | wc -l`
 if [ $lines -gt 0 ];then
      echho $lines
else
     echo "no"
fi  

整形测试方法:整形测试通常都是二元测试,格式是:num1 oprand num.

操作符:  

   -gt:大于       -lt:小于    -ge:大于等于    -le:小于等于   -ne:不等于     -eq:等于

用户和脚本进行交互:   

       位置变量       red 命令:    read  -p  "参数"   变量名

               例:read  -p  "请输入第一个数字:" num1

3) 让用户通过键盘输入一个用户名 如果用户存在,就显示其用户的用户名和uid 否则,就显示用户不存在。

#!/bin/bash
read -p  "enter a user name:"  username
id  -u  $username &?》/dev/null
num=$?
if [ $num -eq 0 ];then
      uid=`id -u $userName`
      echo "$userName is exists,uid is $uid"
else
      echo "user is not exists"
fi

4)让用户通过键盘输入一个用户名,如果用户不存在就退出 如果用户的uid大于等于500,就说明是普通用户;输出”普通“ 否则,就说明这是管理员用户或系统用户。

        方法一:

#!/bin/bash
read -p "enter a user name" name
id -u $name &>/dev/null
num=$?
if [ $num -eq 0 ];then
      uid=`id -u $name`
    if [ $uid -gt 499 ];then
       echo "putong"
   else
        echo "xt"
   fi
else
      echo "not exists"
fi

   方法二:

#!/bin/bash
read -p "enter a user name" name
 id -u $name &>/dev/null
num=$?
if [ $num -ne 0 ];then
         echo "no"
         exit 0
fi
uid=`id -u $name`
if [ $uid -gt 499 ];then
        echo "pt"
else
     echo "xt"
fi

5)让用户通过键盘输入一个用户名,如果用户不存在就退出 如果其uid等于其gid,就说塔是个”good guy“ 否则就说明是”bad guy“。

#!/bin/bash
read -p "enter a user name" name
id -u $name &> /dev/null
num=$?
if [ $num -ne 0 ];then
    echo "no"
    exit 0
fi
uid=`id -u $name`
gid=`id -g $name`
if [ $uid -eq $gid ];then
     echo "good"
else 
     echo "bad"
fi