bash编程之变量、变量类型

变量:一段命名的内存空间

变量类型:事先确定数据的存储格式和长度(整型、浮点型、真假型)

Shell编程: 弱类型编程语言

强:变量在使用前,必须事先声明,甚至还需要初始化;

弱:变量用时声明,甚至不区分类型;

变量赋值:VAR_NAME=VALUE

bash编程之变量、变量类型_bash编程

bash变量类型:

         环境变量

         本地变量(局部变量)

         位置变量

         特殊变量(系统内置的变量、用于存储特殊的数据)

引用变量:${VAR_NAME},括号可以省略,是否省略主要看其引用的变量名称是否容易引起混淆

bash编程之变量、变量类型_bash编程_02

不同的shell的是不同的进程

bash编程之变量、变量类型_bash编程_03

本地变量:

set (可省略)VARNAME=VALUE: 作用域为整个bash进程;

局部变量:

local VARNAME=VALUE:作用域为当前代码段;

环境变量:作用域为当前shell进程及其子进程;(只对当前shell以及其子shell有效)

bash编程之变量、变量类型_bash编程_04

1.export VARNAME=VALUE

2.VARNAME=VALUE

export (导出) VARNAME

位置变量:$1, $2, ...

特殊变量:

$?: 上一个命令的执行状态返回值;

bash编程之变量、变量类型_bash编程_05

程序执行,可能有两类返回值:

         程序执行结果

         程序状态返回代码(0-255

                   0:正确执行

                   1-255:错误执行,12127系统预留;

注:表示不存在学生这个用户

撤消变量:unset VARNAME

bash编程之变量、变量类型_bash编程_06

查看当shell中变量:set

bash编程之变量、变量类型_bash编程_07

查看当前shell中的环境变量:printenv或者printexport

bash编程之变量、变量类型_bash编程_08

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序

每一个shell脚本的最前面一句#!/bin/bashshebang: 魔数)

# :表示注释行,不执行

bash编程之变量、变量类型_bash编程_09

给脚本添加执行权限(linux只能识别ELF格式的文件,然而脚本是ASSIC格式的文件)

bash编程之变量、变量类型_bash编程_10

给脚本文件指定执行路径(./frist.sh为当前路径)

bash编程之变量、变量类型_bash编程_11

去权限执行脚本:(bash frist.sh)直接用bash解释器,但是在必须单独执行的时候必须给与脚本文件执行的权限

bash编程之变量、变量类型_bash编程_12

/dev/null: 软件设备, bit bucket,数据黑洞       (表示输入到里面的数据不会被显示出来)

bash编程之变量、变量类型_bash编程_13

shell变量中加入新的值:引用其前面的值即可

bash编程之变量、变量类型_bash编程_14

注:脚本在执行时会启动一个子shell进程;

         命令行中启动的脚本会继承当前shell环境变量;

         系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;

Shell默认是字符串,不做算术运算;比如:

bash编程之变量、变量类型_bash编程_15

写一个脚本,完成以下任务

1、添加2个用户, user1,user2

2、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息;

3、每个用户添加完成后,都要显示用户某某已经成功添加;


bash编程之变量、变量类型_bash编程_16

bash编程之变量、变量类型_bash编程_17


写一个脚本,完成下面的任务。

  1. 使用一个变量保存一个用户

  2. 删除此变量中的目录,并且一并删除其家目录

  3. 显示“用户删除成功”

    bash编程之变量、变量类型_bash编程_18

    bash编程之变量、变量类型_bash编程_19