week23-shell

1. 什么是shell

命令解释器, 用来翻译用户输入的指令给内核,内核驱动硬件,硬件返回给内核,内核面板通知

1. 1 shell 的执行方式

  • 交互式:输入一条,返回一条
  • 非交互式:需要执行的命令写入一个文件中,然后去执行这个文件,所有任务完成

2. 什么是shell 脚本

  • 将系统命令堆积在一起, 顺序执行 (简称: 系统命令堆积)
  • 特定的格式 + 特定的语法 + 系统的命令 = 文件 ---> shell脚本

3. shell脚本能做什么

week23-shell_第1张图片
shell可以做什么

4. 学习shell 脚本需要哪些预备知识,如何才能学完shell脚本

  • 熟练使用vim编辑器
  • 熟练使用linux 命令
  • 熟练使用linux 三剑客

如果对命令使用不够熟练,对基本服务不能手动大剑,那么一定学不会shell

如何学好shell脚本

基础命令+基础服务+经常练习+ 思路

5. shell脚本编写规范,shell脚本执行方式

  • 脚本存放固定目录/scripts
  • 开头加#!/bin/bash 作用:告诉脚本使用的是哪种命令解释器。如不指shell,默认以bash执行。
  • 附带作者及版权信息
  • 脚本扩展名为*.sh
  • 脚本中尽量不使用中文
  • 成对的符号一次书写完成
  • 循环格式一次性输入完成

6. 解释器加与不加的区别 (# !/bin/bash)

week23-shell_第2张图片
没有加解释器的shell脚本
bash shell_01.sh 使用bash运行脚本
./bash shell_01.sh 直接执行脚本
week23-shell_第3张图片
使用bash 命令可以正常执行
week23-shell_第4张图片
以./ 需要加权限才可以执行脚本

. / 方式执行,系统会读取第一行声明的解释器,如果不加,linux系统默认使用bash,如果脚本不是bash可执行的命令,就会报错

Centos 6 !/bin/bash
Centos 7 !/usr/bin/bash

补充:如何让Vim编辑器自动显示行号

vim /etc/vimrc
在最后一行加入 set number
wq 保存退出

7. Shell 脚本变量

7.1 什么是变量

变量是shell传递数据的方法,简单理解,就是用一个固定的字符串,表示一个不固定的值

7.2变量命名规范

变量定义时建议使用:大写字母、小写字母、下划线几个组成 {变量名最好具备一定的含义}
不要出现数字开头:
可以使用如下的方式:
HostName=
cpu_load_ava_1=1
cpu_load_ava_5=2
cpu_load_ava_15=3

注意: 等号是复制,需要注意,等号两边不能有空格,其次,定义的变量不要与系统的命令出现冲突

7.3 shell定义变量的方式

  • 用户自定义变量:人为定义变量名称

自己设定的变量

  • 系统环境变量:保存的是和系统操作

系统设置好的,可以直接调用

  • 位置参数变量:位置参数变量,变量名不能自定义,变量作用也是固定

  • 预定义的变量:是Bash中已经定义好的变量,变量不能自定义,变量作用也是固定的

8. Shell 变量实践

8.1 用户自定义变只在当量前shell 有效

定义变量 变量名=变量值 不能出现 " - " 命名

week23-shell_第5张图片
当前窗口定义一个变量
week23-shell_第6张图片
新建窗口之后变量不在有作用

想要多个窗口都读到变量,设置为全局变量就可以想要在系统生效,必须写入配置文件/etc/profile

week23-shell_第7张图片
写入全局变量
week23-shell_第8张图片
在其他shell窗口也可以使用定义的全局变量

**8.2 **

引用变量,$变量名

var_1=a1b2
echo $var_1
a1b2

8.3 查看变量

查看变量,set显示所有变量,包括自定义变量和环境变量

查询刚刚设置的变量

8.4 取消变量,作用范围:仅在当前shell中有效

week23-shell_第9张图片
取消变量
week23-shell_第10张图片
全局变量同样也可以临时取消
在其他shell中依旧有效

8.5 shell中 单引号与双引号的区别

什么时候使用双引号

  • 字符串出现空格的情况需要双引号将其作为一个整体
字符串
  • 如果内容中有命令、变量等,会先把变量、命令解析出结果,然后输出最终内容。

什么时候使用单引号

  • 所见即所得,单引号中是什么就输出什么
  • 单引号会解析引号中的变量

9. 系统环境变量

系统环境变量详细解释

系统环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等

查看系统环境变量
export

9.1 常见系统变量

  • 用户的家目录: $HOME
  • 当前主机名是: $HOSTNAME
  • 当前所在目录: $PWD
  • 当前连接信息: $SSH_CONNECTION

9.2 自定义系统环境变量

week23-shell_第11张图片
变量$var_3 没有定义为系统环境变量时bash解释器中无法识别

week23-shell_第12张图片
定义系统环境变量
week23-shell_第13张图片
查询变量
export var_3=a1 定义系统环境变量 ,注意不要加上$符号

9.3 预定义变量
Bash中已经定好的变量,名称不能自定义,作用也是固定的

week23-shell_第14张图片
示例

$0:当前脚本的文件名
$n:第n个参数    第0个参数为文件名称
$#:参数个数   
$*:所有的参数   在一块内存中,空格间隔
$@:所有的参数  申请n个空间,分别存放
$?:上次命令执行的返回值

用处
$n:在判断用户输入的位置参数是什么
$#:判断参数个数
$?:判断命令执行结果

week23-shell_第15张图片
判断参数个数

$* 和 $@的区别

不加引号时,二者都是返回传入的参数
加了引号后,
    $* 把参数作为一个字符串整体(单字符串)返回
    $@ 把每个参数作为一个一个的字符串进行返回

你可能感兴趣的:(week23-shell)