第十七课时:shell脚本编程

简介

什么是脚本

  • 将要执行的Linux命令保存到一个文件中,然后通过执行这个文件来批量自动执行命令

作用

  • 批量执行操作
  • 重复执行操作

编写shell脚本的基本流程:

第一步:用vi创建一个后缀是.sh的文件

[root@localhost yum.repos.d]# vi yangshuai.sh

#第二步:在sh文件中写入内容

内容格式:

  • 脚本的第一行是固定的 #!/bin/bash (!一定要用英文的中文的不行)
  • 从脚本的第二行开始才是脚本的正文

#!/bin/bash           (固定格式)

#创建一个用户名
useradd tom3

#在home下创建一个叫ercheng的一般文件
touch  /home/ercheng.txt

#删除tmp下的文件
rm -rf /tmp/*

#在home下创建一个名为陈梓博的目录
mkdir  /home/chenzibo

第三步 : 保存退出

第四步:为脚本设置执行权限

[root@localhost yum.repos.d]# chmod +x yangshuai.sh

第五步:执行脚本

方法1:bash +脚本名

[root@localhost yum.repos.d]# bash yangshuai.sh

方法2: ./脚本名         ./后边不能加空格

[root@localhost yum.repos.d]# ./yangshuai.sh

变量

  • 定义变量:变量名 = 变量值
  • 获取变量:$变量名

 echo命令

作用:用于打印输出一个信息到屏蔽

格式:

echo "输入的信息"

echo特殊效果

  • ech -e "xxxxxxxxxxx \033[31m xxxx \033[0m"     

案例:

#定义变量

[root@localhost ~]# name=zhaosi

[root@localhost ~]# from=xinle

[root@localhost ~]# tell=13537776288

[root@localhost ~]# mail=789@qq.com

#使用变量进行输出

[root@localhost ~]# echo "我的姓名是$name,我的家在$from, 我的电话是$tell,我的电子邮箱是$mail" 我的姓名是zhaosi,我的家在xinle, 我的电话是1357776288,我的电子邮箱是789@qq.com

     输出的时候前边一定要加$

命令替换

  • 将命令替换成命令的执行结果

案例:

创建文件,文件名是当前系统时间

[root@localhost ~]# touch `date +%T`.txt

案例:

 定义变量保存当前系统的IP

 [root@localhost ~]# ip=`ifconfig  | grep "netmask" | awk -F " " '{print $2}'`       

(变量中要用··  反引号引起来)

[root@localhost ~]#  echo  $ip 

192.168.31.101

# 定义变量保存当前系统的剩余内存大小

[root@localhost ~]# freeMen=`free -m | grep Mem | awk -F " " '{print $4}'`

                                  判断

useradd命令

作用:创建新用户

格式:

useradd 用户名

useradd 用户名

  • 一行就是一个用户的信息
  • 以冒号为分割的部分中,第一部分就是用户名

userdel命令

作用:删除用户

格式:

userdel 用户名

passwd命令

作用:修改用户密码

格式:

passwd 用户名

id命令

作用:检查指定的用户的uid

格式:

id 用户名

判断有三种

  • 判断命令
  • 判断数字
  • 判断文件

判断的格式

格式1:

   if  [ 判断条件 ] ;then

执行操作            # 只有当条件成立的时候,才会执行这里的操作

  fi

格式2:

  if  [ 判断条件 ]  ;then

执行操作                 # 只有当条件成立的时候,才会执行这里的操作

  else

执行操作                  # 当条件不成立的时候执行

  fi

if  [ 判断条件 ] ; then   

  •   这里if 之间必须用空格隔起来 
  •   [  这个后边也要加空格 
  •   ] 这个前边也要加空格 

例子1::判断两个数字的大小,输出大的数

#先vim创建个文件 

[root@localhost ~]#  vim  ercheng.sh

#内容如下

#!/bin/bash

num1=1

num2=2

if  [  $num1 -gt $num2 ];then

    echo $num1

    else

    echo $num2

     fi

#然后赋予这个脚本权限

[root@localhost ~]#   chomd +X  ercheng.sh

#然后执行这个脚本

[root@localhost ~]# bash  ercheng.sh

案例2:判断文件/etc/passwd中是否有#开头的行

    #先用vim创建个文件

[root@localhost ~]#  vim  lbsb.sh

  #内容如下

#!/bin/bash

grep "^#"  /etc/passwd
  num3=$?
if [ $num3 -eq 0 ];then
     echo"是#号开头"
 else
   echo "不是#开头"
fi

#然后赋予这个文件

[root@localhost ~]#   chomd +X   lbsb.sh

#然后执行这个文件

[root@localhost ~]# bash  lbsb.sh

案例3:在home下创建一个目录,判断是否创建成功了

#先用vim创建个文件

[root@localhost ~]#  vim  jhls=.sh

#内容如下

#!/bin/bash

mkdir /home/chousb
num=$?
if [ $num -eq 0 ];then
 echo "文件创建成功"
 else
 echo "文件创建失败"
 fi

#然后赋予这个脚本权限

[root@localhost home]# =chmod +x  jhls.sh

#然后执行这个脚本

[root@localhost home]# bash jhls.sh

案例4:判断用户tom是否存在

  • 如果存在,则提示用户存在,并删除这个用户
  • 如果不存在,则提示无此用户,并创建这个用户

内容如下:

#!/bin/bash

id tom&>/dev/null

num=$?

 if [ $num -eq 0 ];then

    echo "用户已存在,并未你删除"

userdel jerry &>/dev/null

    else

    echo "无此用户,并未你创建用户"

useradd jerry &>/dev/null

    fi

命令的执行状态

  • 执行成功:状态值是0
  • 执行失败:状态值是非0

$? 用于获取离他最近的哪个命令的状态值,状态值为0的情况

  • id 用户名,这个用户是存在的
  • cd、ls正常执行的时候
  • grep过滤到了需要的内容

     例子

[root@localhost /]#  cd home

[root@localhost home]# cat chousb

[root@localhost home]# mkdir chousb        (就是$? 获取最近的就是 创建文件的这个状态)

关于状态值的是使用方法

1)要执行的命令

2)定义变量,保存状态值 num=$?

3)输出状态值 echo $num

判断数字

  • [ 数字1 -gt 数字2 ] 判断数字1大于数字2
  • [ 数字1 -lt 数字2 ] 判断数字1小于数字2
  • [ 数字1 -eq 数字2 ] 判断数字1等于数字2
  • [ 数字1 -ne 数字2 ] 判断数字1不等于数字2
  • [ 数字1 -ge 数字2 ] 判断数字1大于等于数字2
  • [ 数字1 -le 数字2 ] 判断数字1小于等于数字2

4、循环

for 变量   in   列表

do

done

列表的写法

  1. 直接写列表的元素
  2. {}生成元素,格式:{start..stop}

写法一:每隔2s输出一个数字,输出1-11的数字

      #!/bin/bash

     for num in 1 2 3 4 5 6 7 8 9 10 11         #数字之间要加空格
    do 
    echo $num 
    sleep 2
    done

写法二:每隔2s输出一个数字,输出1-11的数字

#!/bin/bash

for num in {1..11} 
 do 
  echo $num 
 sleep 2
 done

案例:创建用户jerry1~jerry10,如果有的用户已经存在了,就提示用户已存在,而且不要再创建这个用 户了

[root@localhost ~]# vim ercheng.sh

#!/bin/bash

for num in {1..10}
 do 
 id jerry$num &>/dev/null
 car=$?
if [ $car -ne 0 ]; then
  useradd jerry$num &>/dev/null
 echo "user jerry$num 已为你创建用户"
 else
 echo "user jerry$num 创建用户已存在"
fi
done 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值