shell编程

Shell是什么

在这里插入图片描述
Shell 是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

Shell脚本运行方式

格式要求

  1. 脚本以 #!/bin/bash 开头
  2. 脚本需要有可执行权限

脚本的常用执行方式

方式一:输入脚本的绝对路径或相对路径

  1. 首先赋予helloworld.sh 脚本 +x 权限
  2. 执行脚本
    在这里插入图片描述

方式二:sh + 脚本

说明:不用赋予脚本 +x 权限,直接执行即可
在这里插入图片描述

Shell 的变量

Shell 的变量的介绍

  1. Linux Shell 中的变量分为 系统变量 和 用户自定义变量。
  2. 系统变量:$HOME、$PWD、$SHELL、$USER 等等
    在这里插入图片描述
  3. 显示当前 shell 中所有变量:set

shell 变量的定义

基本语法:

  1. 定义变量:变量=值
  2. 撤销变量:unsettle 变量
  3. 声明静态变量:readonly 变量
    注意:不能 unset

在这里插入图片描述
在这里插入图片描述

定义变量的规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
  2. 等号两侧不能有空格
  3. 变量名称一般习惯为大写

将命令的返回值赋给变量

  1. A=`ls -la`
    运行里面的命令,并把结果返回给变量A
  2. A=$(ls -la)
    等价于上面的语句

在这里插入图片描述

设置环境变量

语法:

  1. export 变量名=变量值 (将shell变量输出为环境变量)
  2. source 配置文件 (让修改后的配置信息立即生效)
  3. echo $变量名 (查询环境变量的值)

在这里插入图片描述
示例:

    1. 在 /etc/profile 文件中定义 TOMCAT_HOME 环境变量
      在这里插入图片描述
    1. 查看环境变量 TOMCAT_HOME 的值
      在这里插入图片描述
    1. 在另外一个 shell 程序中使用 TOMCAT_HOME
      . 在这里插入图片描述
      注意:在输出 TOMCAT_HOME 环境变量前,需要让其生效
      source /etc/profile

位置参数变量

介绍

当我们执行shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。

语法

  • $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如¥{10}
  • $* :这个变量代表命令行中所有的参数,$*把所以把所有的参数看做一个整体
  • $@ :这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
  • $# :这个变量代表命令行中所有参数的个数

预定义变量

介绍

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

基本语法

  • $$ (当前进程的进程号)
  • $! (后台运行的最后一个进程的进程号)
  • $? (最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
    在这里插入图片描述

运算符

介绍

学习如何在 shell 中进行各种运算操作

基本语法

  1. “$((运算式))” 或 “$[运算式]”
  2. expr m + n
    注意 expr 运算符间要有空格
  3. expr m - n
  4. expr * , / , %  乘,除,取余

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

条件判断

语法

  • [ condition ] (注意:condition前后要有空格)
    #非空返回true,可用 $? 验证(0为true,>1为 false)

常用判断条件

两个整数的比较

  • = 字符串比较
  • -lt 小于
  • -le 小于等于
  • -eq 等于
  • -gt 大于
  • -ge 大于等于
  • -ne 不等于

按照文件权限进行判断

  • -r 有读的权限 [ -r 文件 ]
  • -w 有写的权限
  • -x 有执行的权限

按照文件类型进行判断

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流程控制

if 判断

语法:

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

注意:

  1. [ 条件判断式 ] 中括号和条件判断式之间必须有空格
  2. 推荐使用第二种方式

在这里插入图片描述

case 语句

基本语法:

case $变量名 in
"值1")
	如果变量的值等于值1,则执行程序1
	;;
"值2")
	如果变量的值等于值2,则执行程序2
	;;
···省略其他分支···
*)
	如果变量的值都不是以上的值,则执行此程序
	;;
esac

在这里插入图片描述

for 循环

语法:

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

在这里插入图片描述
在这里插入图片描述

while 循环

语法:

while [ 条件判断式 ]
do 
	程序
done

注意:while 和 [ ] 之间有空格
在这里插入图片描述

read 读取控制台输入

语法:

read (选项) (参数)

选项:

  • -p:指定读取值时的提示符;
  • -t:指定读取值是等待的时间(秒),如果没有在指定的时间内输入,就不再等待

参数:

  • 变量:指定读取的变量名

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值