shell 脚本

目录

  1. shell 脚本介绍

  2. shell 脚本规则

    2.1 shell 脚本和其他语言对比

    2.2 变量的规则

  3. shell 脚本启动方式

  4. 编写shell 脚本注意事项

    4.1 区分单引号和双引号的不同和相同点

  5. read 传递多个参数

    5.1 参数传递

  6. 比较运算符和逻辑运算符

    6.1 比较运算符(数字)

    6.2 比较运算符(字符串)

    6.3 逻辑运算符

  7. if 语句

  8. case 规则

  9. for 循环

  10. while 循环

  11. shell 脚本的函数

    11.1 函数中的参数

    11.2 函数中的返回值

 

1. shell 脚本介绍

Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

 

2. shell 脚本规则

Shell 和python都是弱语言

  2.1 shell 脚本和其他语言对比

# 从定义变量对比
java

变量类型    变量名=变量值
int    a   =   2
string    name    =   “zhangsan”
输出:system.out.print(a)

python

变量名=变量值
a    =   2
b    =   “zhangsan”
输出:print(a)

js

var    变量名=变量值
var   a  =  1

shell

变量名=变量值
规则:变量名和变量值没有空格
a=2
输出:echo $a
输入:read  -p   “描述”   name

 

  2.2 变量的规则

    定义变量规则:变量名=值

    shell定义变量的规则:

    1:等号两边不能有空格
    2:定义特殊的变量需要用单引号或者双引号结合
    3:定义linux命令需要用反单引号

    举例:

    比如linux查看当前当前所在路径:pwd

    shell 脚本

3. shell 脚本启动方式

  第一种:可能会考虑是否有权限

  ./文件名.sh

  一般只是缺少可执行的权限,所以我们只需要使用 chmod  +x 文件名 赋予文件权限即可

  第二种:不需要考虑权限,强制运行

  sh  文件名.sh

4. 编写shell脚本注意事项

  文件里第一行必须是 #!/bin/bash

  脚本名称使用.sh结尾

  Shell输出值:echo $变量名

  4.1 区分单引号和双引号的不同和相同点

  shell 脚本

 

 

   单引号中有$变量名,输出的是$变量名

  shell 脚本

 

 

 5. read 传递多个参数

  read可以传递多个数据 read –p”name and passwoed”name password
超过的部分都填充在最后一个变量上

  5.1 参数传递

  向.sh文件中传递数据

  格式:

  sh  脚本名.sh  参数

  输出方法:

  $1:接收第一个参数~~$n
  $n:文件名称
  $@:所有参数 s
  $#参数个数 $0

  示例:

  普通传递多个参数

  shell 脚本

 

 

   看上去更直观,改进后如图下:

  shell 脚本

 

 

   shell 脚本

 

 

   $1使用方法:

   $1正常编写:

  shell 脚本

 

 

   输出看看效果:

  shell 脚本

 

 

   $1特殊编写:

  shell 脚本

 

 

   输出看看效果:

  这里我们传参数时只传3个参数

  shell 脚本

 

 

   注意你会发现第三个参数在输出后结果为空,这是因为$后面的数字是几,他的结果输出就是第几个参数
我们编写的shell是输出第4没有第3,所以我们只传递3个参数时他的第三个结果为空

  改进后如下:

  shell 脚本

 

 

   $0、$@、$#编写:

  shell 脚本

 

 

  输出看看效果:

  shell 脚本

 

 

   $0:输出shell脚本的名字
   $@:输出shell脚本传递参数具体的信息
   $#:输出shell脚本传递了几个参数

6. 比较运算符和逻辑运算符

  6.1 比较运算符(数字)

    -eq   比较是否相等
    -ne   比较不相等
    -gt    比较大于
    -ge   比较大于等于
    -lt     比较小于
    -le    比较小于等于

  6.2 比较运算符(字符串)

    ==  比较是否相等

    !=   比较不相等

    加一操作:((i++))  ((i+=1))

    加n操作:

    s=$(($s+$i))

    s=$[$s+$i]  ((s=$s+$i))

  6.3 逻辑运算符

    逻辑与    -a
    逻辑或    -o
    逻辑非    !

7. if 语句

  格式

  if [ 条件 ]

  then

  语句

  else

  语句
  fi

  注意点:

  1:if后面有空格
  2:条件两边有空格
  3:if条件里面存在变量,需要$,而且变量两边需要双引号
  4:fi是结束标识

  示例:

  判断用户输入的用户名(name)和密码(password)是否为admin 和 123456,如果是则提示登录成功(success),否则提示失败(fail)

  shell 脚本

 

 

   输出看看效果:

  shell 脚本

 

 

   格式:  

  if [ 条件 ]
  then
  语句
  elif [ 条件 ]
  then
  语句
  …
  else
  语句
  fi

  示例:

  输入学生的成绩,80<score<=100提示very good,60<score<=80提示good,其他则提示不及格

  shell 脚本

 

   输出看看效果:

  shell 脚本

 

8. case 规则

  格式:

  case $变量名 in
  “值”)
  语句;;
  “值”)
  语句;;
  …
  esac

  注意:

  1:case这第一行以in结尾
  2:值可以是字符串也可以是数字, 如果数字范围[0-9]
  3:结束语句;;
  4:esac结束标志

  示例:

  输入一个序号,判断该用户选择哪款产品,A:笔记本 B:手机 C:小台灯
  shell 脚本

 

   输出看看效果:

  shell 脚本

 

   请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意

  shell 脚本

 

   输出看看效果:

  shell 脚本

 

   

9. for 循环

  格式:

  for 变量 in 列表
  do
  语句
  done

  注意: 结束标志done

  shell 脚本

 

   输出看看效果:

  shell 脚本

  扩充:

  试想列表中的元素过多的时候,需要怎么做?
  seq mix step max

  注意:

  mix 开始数据 step:间隔 max 结束数据,如果step为1,可以省略,需要用反单引号

  shell 脚本

 

       shell 脚本

 

   步长为1时,可以省略

  输出结果看看:

  shell 脚本

 

   步长为2示例:

  shell 脚本

 

   输出结果看看:

  shell 脚本

 

 10. while 循环 

  while [ 条 件 ]
  do
  语句
  done

  注意:
  1: while后面有空格
  2:条件两边有空格
  3:while条件里面存在变量,需要$,而且变量两边需要双引号
  4:done是结束标识

  示例:

  求1-100之间的和

  shell 脚本

 

   输出结果看看:

  shell 脚本

 

11. shell 脚本函数

  格式:

  函数名(){
  代码
  }
  # 调用格式
  函数名

  注意点:必须先定义一个函数,然后再调用它

  shell 脚本

 

  输出结果看看

   shell 脚本

 

   11.1 函数中的参数

    使用 $n 来接收数据

    示例1:

    输入1,100两个整数进行求和运算,并打印结果

    了解参数传递

    shell 脚本

 

     输出结果:

    shell 脚本

 

     在函数中实现1,100俩数求和

    shell 脚本

 

     输出结果:

    shell 脚本

 

     示例2:

    输入任意两个整数进行求和运算,并打印结果

    shell 脚本

 

     输出结果看看:

    shell 脚本

  11.2 函数中的返回值

  Shell中函数中默认存在返回值

  查看函数的返回值$?

  shell 脚本

 

   注意点:

  如果没有代码错误默认返回值为0,
  有代码错误返回1
  查看返回值内容:$?

  输出结果看看

  shell 脚本

 

   因为我根本没有sdsdf这个目录,所以返回值为1

 

shell 脚本

上一篇:Linux之Centos8 系统安装


下一篇:【sed】精准匹配