AI智能
改变未来

Linux系统中的 Shell 编程

文章目录

  • 一.Shell Script 介绍
  • 1.概念
  • 2.应用场景
  • 3.demo:第一个Shell脚本test.sh
  • 二.变量
    • 1.三种引号的作用:
    • 1)反引号:引用命令的结果
    • 2)单引号:强引用,引号中什么内容就输出什么内容
    • 3)双引号:弱引用,可引用变量的值
  • 2.变量的定义和使用
    • 1)demo01
    • 2)demo02:整数表达式运算
  • 3.预定义变量
  • 4.位置变量
  • 三.数值关系运算符
    • 1.数值关系运算符
    • 2.逻辑运算符
    • 3.字符串运算符
    • 4.文件运算符(写在文件或目录前面)
  • 四.流程控制语句
    • if语句:
    • 1.if语句:
    • 2.if-else语句:
    • 3.if-else-if语句:
  • for循环:
    • 1.普通for循环:
    • 2.增强for循环:
  • while循环:
  • case语句:
  • 五.shell的函数
  • 一.Shell Script 介绍

    1.概念

    • shell脚本是包含一系列命令的文本文件
    • shell读取此文件并执行命令

    2.应用场景

    • 重复性操作
    • 批量事务处理
    • 自动化运维
    • 定时任务执行

    3.demo:第一个Shell脚本test.sh

    • 输入 :
      vi test.sh

      ,输入如下内容然后保存退出

    #!/bin/bashecho \"hello, shell,you\'re very pretty\"
    • 输入:
      chmod +x test.sh

      ,赋予文件执行权限

    • 输入:
      ./test.sh

      ,执行该脚本文件,效果如下:

    • 注意:#!是一个约定的标记,他告诉系统这个脚本需要用解释器来执行

    二.变量

    1.三种引号的作用:

    1)反引号:引用命令的结果

    2)单引号:强引用,引号中什么内容就输出什么内容

    3)双引号:弱引用,可引用变量的值

    2.变量的定义和使用

    1)demo01

    • 1.新建一个param.sh,写入如下内容
    #!/bin/bash#变量定义不需要声明类型abc=123#变量的值可以用$符号获取aaa=$JAVA_HOMEaaa=abc#间接引用,用aaa的值去找变量,若这个变量有值,分配给defdef=${!aaa}#找abc的第一个1替换为habc=${abc/1/h}#使用反引号将该命令的结果赋值给变量path=`pwd`#打印结果echo ${aaa}aaa${abc}echo $defecho $path
    • 2.给与执行权限,并执行文件,结果如下:

    2)demo02:整数表达式运算

    • 新建文件,内容如下:
    #!/bin/bash#方式一:a=1b=2((c=$a+$b))echo c的值: $c#方式二:d=$[ $a+$b ]echo d的值: $d
    • 给与执行权限执行结果如下:

    3.预定义变量

    选项 说明
    $# 命令行参数或位置参数的数量
    $? 最近一次执行的命令或shell脚本的出口状态
    $* 表示所有的位置参数,其值是所有位置参数的值
    $$ 变量是shell脚本里面的进程id,shell脚本经常使用$$变量组织临时文件名,确保文件名唯一性

    4.位置变量

    • $n(n为数字) : $0 代表命令本身,$1-$9代表顺序参数编号,大于10的话使用括号,如${10}
    • 示例如下:
    #!/bin/bashecho 参数个数: $#echo 所有位置参数: $*echo \'上一句结果(执行成功为0):\' $?echo 进程id: $$echo 当前命令: $0echo 第一个参数: $1echo 第二个参数: $2
    • 执行结果如下:

    三.数值关系运算符

    1.数值关系运算符

    选项 说明
    -eq 等于
    -ne 不等于
    -gt 大于
    -lt 小于
    -ge 大于等于
    -le 小于等于

    2.逻辑运算符

    选项 说明
    -a 或者 && 逻辑与
    -o 或者 || 逻辑或
    ! 逻辑否

    3.字符串运算符

    选项 说明
    = 等于
    != 不等于
    -z 判断是否为空

    4.文件运算符(写在文件或目录前面)

    选项 说明
    -d 判断是否为目录
    -e 判断目录或文件是否存在
    -f 判断是否为文件
    -r 判断文件或目录针对当前用户是否可读
    -w 判断文件或目录针对当前用户是否可写
    -x 判断文件或目录针对当前用户是否可执行

    四.流程控制语句

    <- bash shell脚本中变量无法存储布尔值,布尔值只能用于条件判断,条件中非空的话结果都为true >

    if语句:

    1.if语句:

    ifthenfi

    2.if-else语句:

    ifthen...else...fi

    3.if-else-if语句:

    ifthen...elifthen...else...fi

    for循环:

    1.普通for循环:

    for((a=1;a<=5;a++))do...done

    2.增强for循环:

    for a in param1 param2 param3 ...do...done

    while循环:

    a=1while [ a -le 5 ]do...let \"a++\"done

    case语句:

    case 变量 in值1)...;;值2)...;;*)...;;esac

    五.shell的函数

    • 语法如下:
    函数名(){#	函数体具体代码}函数名-->注意没有括号直接用函数名调用
    • 示例:求1-100的和
    #!/bin/bashread -p \"请输入一个大于1的整数:\" na(){count=0for((a=1;a<=n;a++))do((count=$count+$a))doneecho 总和为: $count}a

    -运行结果如下:

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » Linux系统中的 Shell 编程