AI智能
改变未来

【Linux】快速入门shell编程

每天都得进步,哪怕是一点!

文章目录

  • 一.shell基本介绍
  • 1.基本介绍
  • 2.shell脚本的执行要求
  • 3.脚本的常用执行方式
  • 二.shell变量
    • 1.基本介绍
    • 2.shell变量的定义和撤销
    • 3.定义变量的规则
    • 4.将命令的结果赋值给变量
    • 5.设置环境变量
    • 7.位置参数变量
    • 8.预定义变量
    • 9.shell中的运算符
  • 三.流程控制-条件控制
    • 1.条件判断基本语法
    • 2.常用的条件判断 `重点`
    • 2.1.字符串比较
    • 2.2.两个整数的比较
    • 2.3.按照文件权限进行判断
    • 2.4.按照文件类型进行判断
    • 2.5.基本案例
  • 3.if判断语句
    • 3.1.基本语法
    • 3.2.基本案例
  • 4.case判断语句
    • 4.1.基本语法
    • 4.1.基本案例
  • 四.流程控制-循环控制
    • 1.for循环
    • 1.1.for循环基本语法1
    • 1.2.语法1的基本案例
    • 2.1.for循环基本语法2
    • 2.2.语法2的基本案例
  • 2.while循环
    • 2.1.while基本语法
    • 2.1.while基本案例
  • 五.read读取控制台输入
    • 1.基本语法
    • 1.基本案例
  • 五.shell函数基础
    • 5.1.常用系统函数
    • 5.2.自定义函数基本语法
    • 5.3.函数入门案例

    一.shell基本介绍

    1.基本介绍

    shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求的以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序

    2.shell脚本的执行要求

    ①脚本以#!/bin/bash开头 【使用bash进行解释】
    ②脚本需要

    有可执行权限

    3.脚本的常用执行方式

    ①添加可执行权限,直接运行
    ②没有可执行权限,sh+脚本名【也可执行】

    二.shell变量

    1.基本介绍

    ①Linux shell中的变量分为系统变量和用户自定义变量
    ②常用的系统变量有:$HOME $PWD $SHELL $USER 等
    ③命令行中使用

    set

    可以查看当前shell中所有的变量

    2.shell变量的定义和撤销

    ①定义变量:变量名=值 【

    注意:声明变量时,等号两边不能有空格


    ②撤销变量:unset 变量名
    ③声明静态变量:readonly 变量 【

    注意:静态变量不能unset

    3.定义变量的规则

    ①变量名称可以有字母,数字,下划线组成。不能以数字开头
    ②定义变量时,等号两边不能有空格
    ③变量名称一般为大写

    4.将命令的结果赋值给变量

    ①A=`ls -la` 【反引号】 运行里面的命令,并把结果返回给变量A
    ②A=$(ls -la) $符号等价于反引号

    5.设置环境变量

    ①export 变量名=变量值 【让shell变量输出为环境变量】
    ②source 配置文件 【让修改后的环境变量立即生效】
    ③echo $变量名 【查询环境变量的值】


    6.代码注释
    ①单行注释

    #

    ②多行注释
    :<<!

    内容

    内容

    !

    7.位置参数变量

    当我们执行一个shell脚本时,如果希望获取命令行的参数信息,就可以使用位置参数变量,比如:./myShell.sh 100 200,这个就是一个执行shell的命令行,可以在myShell脚本中获取到参数信息

    变量 说明
    $n n为数字,$0代表命令本身,$1-$9代表一个到第九个参数,十个或十个以上的的参数需要使用大括${10}
    $* 功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
    $@ 功能描述:这个变量也代表命令行中所有的参数,$@把每个参数区分对待
    $# 功能描述:这个变量代表命令行中所有参数的个数
    8.预定义变量

    就是shell设计者事先已经定义好的变量,可以直接再shell脚本中使用

    变量 说明
    $$ 当前进程的进程号(PID)
    $! 后台运行的最后一个进程的进程号(PID)
    $? 最后一次执行的命令的返回状态,如果返回0,就代表该命令正确执行,非0就代表不正确执行
    9.shell中的运算符

    ①$((运算式)) 或者 $[运算式]
    ②`expr m + n` 注意:需要用反引号引起来,

    运算符两边需要有空格

    ③* 注意乘号需要使用转义符号 \\,其他符号正常使用

    #!/bin/bash#计算A加B的值A=100B=200#方式一echo \"A+B= $(($A+$B))\"#方式二echo \"A+B= $[$A+$B]\"#方式三echo \"A+B= `expr $A + $B`\"#*乘号需要使用转义符echo \"A+B= `expr $A \\* $B`\"

    执行脚本

    三.流程控制-条件控制

    1.条件判断基本语法

    ①[ condition ]

    注意condition前后需要有空格

    ②非空返回true,可以使用

    $?

    验证,0为true,>1为false
    ③应用实例
    [ hello ] 返回true
    [] 返回false

    ④三元表达式:
    [ condition ] && echo ok || echo nook

    说明:条件判断为真输出ok,为假输出nook

    2.常用的条件判断

    重点

    2.1.字符串比较

    = 等于

    2.2.两个整数的比较

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

    2.3.按照文件权限进行判断

    -r 可读
    -w 可写
    -x 可执行

    2.4.按照文件类型进行判断

    -f 文件存在并且是一个常规的文件
    -e 文件存在
    -d 文件存在并且是一个目录

    2.5.基本案例

    #!/bin/bash#案例一:判断\"ok\" 是否等于 \"ok\"if [ \"ok\" = \"ok\" ]thenecho \"相等equal\"fi#案例二:判断 23 是否大于 22if [ 23 -ge 22 ]thenecho \"23 大于 22\"fi#案例三:判断当前目录下是否存在aaa.txt文件if [ -e ./aaa.txt ]thenecho \"存在\"fi

    3.if判断语句

    3.1.基本语法

    注意:

    [ 条件判断式 ] 中两边都有空格

    if [ 条件判断式 ]then程序elif [ 条件判断式 ]then程序fi

    3.2.基本案例

    #!/bin/bash#成绩通过位置参数获取#输出成绩,如果大于60输出及格了,否则输出不及格sorce=$1if [ $sorce -ge 60 ]thenecho \"及格了\"elif [ $sorce -lt 60 ]thenecho \"不及格\"fi

    4.case判断语句

    4.1.基本语法

    case $变量名 in\"值1\")程序;;\"值2\")程序;;* )其他值进入此分支;;esac

    4.1.基本案例

    #!/bin/bash#输出数字,如果为1,输出周一,如果为2,输出周二,其他数字,输出其他case $1 in\"1\")echo \"周一\";;\"2\")echo \"周二\";;*)echo \"other\";;esac

    四.流程控制-循环控制

    1.for循环

    1.1.for循环基本语法1

    for 变量 in 值1 值2 值3do程序done

    1.2.语法1的基本案例

    #!/bin/bash#求出位置参数的和sum=0for i in $@dosum=$[$sum+$i]echo \"$i\"doneecho \"结果为 $sum\"

    2.1.for循环基本语法2

    for (( 初始值;循环控制条件;变量变化 ))do程序done

    2.2.语法2的基本案例

    #!/bin/bash#求出1-100的和sum=0for ((i=0;i<=100;i++))dosum=$[$sum+$i]doneecho \"1-100的和为:$sum\"

    2.while循环

    2.1.while基本语法

    while [ 条件判断 ]do程序done

    2.1.while基本案例

    #!/bin/bash#输出一个数n,求出1-n的和sum=0n=$1while [ $n -gt 0 ]dosum=$[$sum+$n]n=$[$n-1]doneecho \"$sum\"

    五.read读取控制台输入

    1.基本语法

    read 【选项】(参数)
    选项 说明
    -p 指定读取值时的提示符
    -t 指定读取值时,等待的时间(秒),如果没有在指定的时间内输入,就不再等待了

    1.基本案例

    #!/bin/bash#读取控制台的值read -p \"请输入一个值:\" NUM1echo \"你输出的值为: $NUM1\"

    #!/bin/bash#三秒钟后自动退出read -t 3 -p \"3秒内输入\" NUM2echo \"$NUM2\"

    五.shell函数基础

    shell函数和其他编程语言一样,有系统函数,也可以自定义函数

    5.1.常用系统函数

    ①basename 【pathname】【suffix】
    功能:返回完成路径最后 / 部分,常用于获取文件名

    ②dirname 文件绝对路径
    功能:返回完成路径最后 / 的前面部分,常用于返回路径部分

    5.2.自定义函数基本语法

    [function] function[()]{Action;[return int;]}

    5.3.函数入门案例

    #!/bin/bash#编写一个函数,用户计算两个数的和function getSum(){SUM=$[$N1+$N2]echo \"结果是:$SUM\"}read -p \"请输入第一个数:\" N1read -p \"请输入第二个数:\" N2getSum $N1 $N2
    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 【Linux】快速入门shell编程