bash编程之变量、变量类型

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

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

Shell编程: 弱类型编程语言

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

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

变量赋值:VAR_NAME=VALUE

wKioL1Z4-6vCV51ZAABBYypt6i8290.png

bash变量类型:

         环境变量

         本地变量(局部变量)

         位置变量

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

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

wKioL1Z4-9iyN8cvAAAyHTcjkrA774.png

不同的shell的是不同的进程

wKioL1Z5AD2AMwXyAAAd_m8Hisk550.png

本地变量:

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

局部变量:

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

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

wKioL1Z4_GSBOpmKAAArU0AHeVU729.png

1.export VARNAME=VALUE

2.VARNAME=VALUE

export (导出) VARNAME

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

特殊变量:

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

wKioL1Z4_I7Agc7QAAApoZSNc0E392.png

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

         程序执行结果

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

                   0:正确执行

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

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

撤消变量:unset VARNAME

wKioL1Z4_KrgvS7xAABO-chVfiw139.png

查看当shell中变量:set

wKioL1Z4_OrBkEybAABwpja9dhs675.png

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

wKioL1Z4_Pyz7hXtAABCKOY7PGU158.png

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

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

# :表示注释行,不执行

wKioL1Z4_2zxSMCnAAA9aqAjqKg860.png

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

wKioL1Z4_j_w4PC3AAB0SFwOSGk080.png

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

wKioL1Z4_SGDILpnAACFEMtlWkM708.png

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

wKiom1Z4_mvBNFy1AABj6oPwoHE829.png

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

wKiom1Z4_Sbzh2VYAAAns_VZRu0210.png

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

wKioL1Z4_UfgbCzqAAA-B_8XDts623.png

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

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

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

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

wKioL1Z4_WOzBVwEAAAk23GDjhc161.png

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

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

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

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


wKiom1Z4_WqCYJzzAAAyNvxdcSc466.png

wKiom1Z4_WqTn5MgAAAf0IAHjIM466.png


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

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

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

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

    wKioL1Z4_aLjiN2qAAAc8R16VIs594.png

    wKiom1Z4_ZHwKfLyAABIBosATJI904.png