变量表示命名的内存空间,将数据放在内存空间中,通过变量名引用,获取数据

变量类型

变量类型:

   内置变量:PS1 PATH  UID HOSTNAME $$  BASHPID PPID $? HISTSIZE

   用户自定义变量

不通的变量存放的数据不通,决定了以下 1、数据存储方式  2、参与的运算 3、数据范围

变量的数据类型:字符型、数值型

变量命名法则

不能使用程序中保留字

只能使用数字、字母及下划线,且不能以数字开头

统一命名规则:驼峰法 StudentName

变量名大写:STUDENT_NAME

局部变量小写

函数名小写

变量的定义和引用

普通变量:生效范围为当前shell进程,对当前shell之外的其他shell进程,包括子shell进程均无效。

20、shell编程之变量_变量

20、shell编程之变量_bash_02

环境变量:生效范围为当前shell进程及其子进程。

本地变量:生效范围为当前shell进程中某代码片段,通常指函数。

变量赋值

直接字符  name='root'

变量应用  name=“$user”

命令引用 name=​​`whoami`​​或者 name=$(whoami)

20、shell编程之变量_环境变量_03

变量强引用及弱引用

’$name’ 强引用,其中变量不会被替换为变量值

“$name”弱引用,其中变量引用会被替换为变量值

20、shell编程之变量_环境变量_04

20、shell编程之变量_变量_05

双应用引用能够将换行符显示出来

环境变量

环境变量:可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量

    一旦子进程修改从父进程继承的变量,将会传递给孙子进程

    一般只在配置文件中使用,在脚本中较少使用

20、shell编程之变量_变量_06

20、shell编程之变量_环境变量_07

环境变量的申明及赋值

export name=value

declare -x name=value

或者  name = value export name

变量引用 $name ${NAME}

显示所有的环境变量  env    printenv  export  declare -x

删除变量  unset name

bash 内建环境变量

(PATH   SHELL  USER  UID  HOME   PWD   LANG   MAIL    HOSTNAME  HISTSIZE  SHLVL(shell嵌套层数) _(上一命令的最后一个参数))

只读变量

只能申明定义,但是后续不能修改和删除,即常量

readonly name     或  declare -r  name

查看只读变量    readonly  [-p]    declare -r

20、shell编程之变量_变量_08

20、shell编程之变量_环境变量_09

位置变量

位置变量:在bash shell 中内置的变量,在脚本代码中条用通过命令行传递给脚本的参数

$1 $2...对应第一个、第二个参数

$0 命令本身,包括路径

$* 传递给脚本的所有参数,全部参数合并为一个参数

$@ 传递给脚本所有参数,每个参数独立字符串

$# 传递给脚本的参数的个数

注意:$@ $* 只有在呗双引号引用才有差异

20、shell编程之变量_变量_10

20、shell编程之变量_变量_11

清空所有位置参数  set --

20、shell编程之变量_变量_12

退出状态码变量

进程执行后,将变量$?(上一条命令执行状态) 保存状态码相关数字,不同值反应成功执行与否,0代表成功  1-255代表失败

20、shell编程之变量_bash_13

用户可以在脚本中使用 exit [n] 自定义退出状态码

注意:脚本中一旦遇到exit命令,脚本立即停止,终止时退出状态取决于exit命令后面的数字;如果未给脚本指定状态吗,则取最后一条命令的状态码

展开命令行

命令执行顺序  把命令行分成单个命令词-展开别名-展开大括号的申明{}-展开波浪符申明~-命令替换$() ``-再次把命令行分成命令词-展开文件通配* ? 等-准备IO重定向<>-运行命令

反斜线 \ 会使后面字符按原意解释

! 叹号 命令历史替换

脚本安全和set

set命令:可以用来定制shell环境

$- 变量

h:哈希,打开选项后,shell会将命令所在路径hash下来,避免每次都要查询,通过set +h将h选项关闭

i:交互shell,

m:监控,打开监控模式,可以通过job control控制进程停止、继续、后台或者前台执行

B:大括号扩展

H:history 历史记录

20、shell编程之变量_环境变量_14

20、shell编程之变量_bash_15

set命令实现脚本安全

-u 在扩展一个没有设置的变量时,显示错误信息,等同于 set -o nounset

-e 如果一个命令返回一个非0退出状态值就退出,等同于set -o errexit  (默认脚本中命令错误后下一个继续执行)

-o option 显示,打开或关闭选项

set -o

-x 当执行命令是,打印命令机器参数,类似bash -x

20、shell编程之变量_变量_16

20、shell编程之变量_bash_17